web-dev-qa-db-ja.com

認証トークンなしでGoogleスプレッドシートAPIにアクセスする

Googleスプレッドシートを作成し、すべてに編集アクセス権を付与しました(ログインしなくても編集できます)。

link です。このスプレッドシートをGoogle Spreadsheet APIで更新したいと思います。しかし、エラーが発生しています。私の要件は、アクセス資格情報がなくてもAPIを介してシートを更新することです。

enter image description here

13
Nageswaran

OAuthまたは_API Keys_なしでスプレッドシートに書き込むことができます。 _Service Account Keys_を使用する必要があります。

Node.js環境のために私がしたことは次のとおりです。

  1. https://console.cloud.google.com/apis/credentials からサービスアカウントキーを取得します(ここで、このキーに許可する操作を制限することもできます)
    1. 作成するときは、必ず_Furnish a new private key_をクリックしてください
    2. キーのダウンロード方法を尋ねられたら、JSONを選択します。
  2. 生成した_service account key_には、_client_email_。が含まれます
    1. Googleスプレッドシートにアクセスして、この_client_email_にこのドキュメントへの書き込みアクセスを許可します
  3. 次のコードを使用して認証します

    let jwtClient = new google.auth.JWT(client_email, null, private_key, [ "https://www.googleapis.com/auth/spreadsheets", ]); //authenticate request jwtClient.authorize(function(err, tokens) { // at this point the authentication is done you can now use `jwtClient` // to read or write to the spreadsheet });

_client_email_および_private_key_は_service account key_の一部です

より詳細な説明はこちらにあります。 http://isd-soft.com/tech_blog/accessing-google-apis-using-service-account-node-js/ また、すべてのクレジットはこのページに移動します。

そのようなリクエストを行う権限がある である必要があります

アプリケーションがGoogle Sheets APIに送信するリクエストはすべて、Googleに対してアプリケーションを識別する必要があります。アプリケーションを識別するには、2つの方法があります:OAuth 2.0トークン(リクエストも承認します)を使用するか、アプリケーションのAPIキーを使用します。使用するオプションを決定する方法は次のとおりです。

リクエストに承認が必要な場合(個人のプライベートデータのリクエストなど)、アプリケーションはOAuth 2.0トークンをリクエストとともに提供する必要があります。アプリケーションはAPIキーも提供できますが、リクエストが承認を必要としない場合(パブリックデータのリクエストなど)、アプリケーションはAPIキーまたはOAuth 2.0トークン、またはその両方を提供する必要があります。 —あなたにとって最も便利なオプションは何でも。

それでおしまい。バイパス認証はありません。

3
noogui

最終的に十分に深く掘り下げ、答えを見つけました。一般に編集可能なシートであっても、あらゆる種類の記述にはOAuthフローが必要です。

https://issuetracker.google.com/issues/36755576#comment

1
Andrew