web-dev-qa-db-ja.com

不十分な権限をスローするgspread認証

Developers.google.comを使用して、apiユーザーを作成し、認証情報をjsonファイルとしてダウンロードしました。今私のMacbookでは、credentials.jsonを使用しているときにgspread認証が正常に機能しています。 aws上の同じ設定をLinuxサーバーに移動すると、403不十分な権限エラーが発生します。

PIPとpythonバージョンは同じです。

例外

gspread.v4.exceptions.APIError: {
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}

基本コード

import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ['https://spreadsheets.google.com/feeds']
creds = ServiceAccountCredentials.from_json_keyfile_name('credentials.json', scope)
client = gspread.authorize(creds)

sheet = client.open('MySheetName').sheet1
11
Ahsan Naseem

scope変数を次のように変更してみてください。

scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']

APIコンソールでDrive APIが有効になっていることを確認します。

gspreadがアップグレードされ、現在API v4に基づいています。より高速ですが、スコープ内の更新が必要です。

これは同じ問題です: https://github.com/burnash/gspread/issues/512

25
Burnash

サービスアカウントを使用しているようです。サービスアカウントがsperadシートにアクセスするためには、アクセスする必要があります。

シートをサービスアカウントのメールアドレスと共有していることを確認してください。Googleドライブのウェブページから行うことができます

2
DaImTo

スコープを更新してもアクセスできない場合は、ターミナルで次のコマンドを実行してみてください。

Sudo pip install 'gspread == 0.6.2' --force-reinstall

0
Yogamurthy