gspread authentication throwing insufficient permission

杀马特。学长 韩版系。学妹 提交于 2019-11-26 23:35:01

问题


Using developers.google.com we created api user and downloaded credentials as json file. Now On my macbook gspread authentication is working fine while using credentials.json. when moved same config to linux server on aws its giving 403 insufficient permission error.

Pip and python version are same.

exception

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

basic code

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

回答1:


Try to change your scope variable to the following:

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

Make sure Drive API is enabled in API console.

gspread has been upgraded and it's now based on API v4. It's faster but it requires updates in scope.

Here's the same issue: https://github.com/burnash/gspread/issues/512




回答2:


You appear to be using a service account. In order for the service account to access your sperad sheet it needs to have access to it.

Make sure that you share the sheet with the service account email address you can do that though google drive web page




回答3:


IF you are unable to access even after updating the scope, try running this command in your terminal:

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



来源:https://stackoverflow.com/questions/49258566/gspread-authentication-throwing-insufficient-permission

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!