スプレッドシートを読み込む必要があるサーバーアプリケーションを作成しています。サーバーがサービスアカウントにアクセスできるため、oauth2client.client
のGoogleCredentials.get_application_default()
を使用しています。ローカル開発では個人の認証情報を使用したいので、Google Cloud SDKを使用しています。私はgcloud auth application-default login
を使ってそれが動作することを確認しました。サービスを作成するGoogleスプレッドシート+ GoogleCredentials = "認証スコープが不十分"
は同じくらい簡単のようにある:
from oauth2client.client import GoogleCredentials
from googleapiclient.discovery import build
credentials = GoogleCredentials.get_application_default()
service = build('sheets', 'v4', credentials=credentials)
そして実際に、それはGoogleのクラウド製品の束のために、これまでのところうまく働いています。シートのAPIを使用しているときの要求を実行するとき はしかし、私は次のエラーを取得する:これはGoogleスプレッドシートAPIで発生し
googleapiclient.errors.HttpError:
<HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/...
returned "Request had insufficient authentication scopes.">
は、(そのようBigQueryのV2のAPIなど)他のAPIは、うまく動作します。
私はすでに確認されているもの:
シートのAPIは、Googleクラウドプロジェクトで有効になっている- は私が試した
Googleクラウドプロジェクトにスプレッドシートやエディタ権利へのアクセス権を持っていますスコープ付きの資格情報を作成するさまざまな方法は、次のようになります。
credentials = GoogleCredentials.get_application_default() scoped_creds = credentials.create_scoped(SCOPES)
ただし、これは効果がないようですe
create_scoped
メソッドはself(source)を返します。- 私はそのプロジェクトでサービスアカウントを作成し、それを指すように環境変数
GOOGLE_APPLICATION_CREDENTIALS
を設定しました。それは実際にcreate_scoped
メソッドの実装を持っているServiceAccountCredentials
を使用しているため、うまく動作します。私は、最新のGoogle-API-のpython-クライアントのバージョン(1.6.2)とoauth2clientを使用しています - (4.0.0)
は、ここに右のトラックに私をアムまたは私は単純に本当にばか何かが欠けています?