gspread认证投入不足

时间:2018-03-13 14:18:57

标签: python google-drive-api google-spreadsheet-api gspread

使用developers.google.com我们创建了api用户并将下载的凭据作为json文件。 现在,在我的macbook上gspread身份验证在使用credentials.json时工作正常。当在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

3 个答案:

答案 0 :(得分:24)

尝试将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

答案 1 :(得分:0)

您似乎正在使用服务帐户。为了使服务帐户能够访问您的sperad表,它需要有权访问它。

请确保您使用服务帐户电子邮件地址共享工作表,您可以通过Google云端硬盘网页进行此操作

答案 2 :(得分:0)

如果您在更新范围后仍无法访问,请尝试在终端中运行此命令:

  

sudo pip install' gspread == 0.6.2' --force-重新安装