当前位置: 首页 > 面试题库 >

gspread身份验证抛出权限不足

东方新霁
2023-03-14
问题内容

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

问题答案:

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



 类似资料:
  • 我能够在没有用户的情况下使用Get access从Microsoft Graph访问资源。但是,这个方法不允许我访问需要委派权限的资源。 我还尝试使用代表用户获取访问权限方法,但它需要我的用户通过网页登录,这在我的方案中是不需要的。 是否可以生成一个使用寿命长(可能超过一年)的授权代码,并使用该代码请求访问令牌,然后使用该令牌获取需要授权权限的资源? 注意:我知道生成具有这么长生命周期的授权代码不

  • 我正在Ionic中创建一个应用程序,它使用Firebase对用户进行身份验证。一旦成功执行身份验证,将其数据保存在Firestore中。用户Firestore集合中的一项是“activeUser:Boolean”,我可以在登录后通过“AngularFirestore”插件返回的可观察(用户$)进行监控。 我创建了一个canActivate类型的保护文件,以便在Firestore中的“activeU

  • 我有一个电子邮件/密码firebase认证的应用程序。 它从登录活动开始 然后在我的onStart中,我检查当前用户是否为空,然后它导航到我的主要活动。这部分工作得非常好。 问题来了,在主活动中我有一个按钮,在这里我从LoginActivity.java调用signout函数: 问题是当logMeOut运行时,我得到了这种美 java.lang.NullPointerException:尝试对空对

  • OAuth术语已经困扰我很久了。OAuth授权是像一些人建议的那样,还是认证? 如果我错了,请纠正我,但我一直认为授权是允许某人访问某个资源的行为,而OAuth似乎没有任何实际允许用户访问给定资源的实现。OAuth实现所讨论的都是为用户提供一个令牌(签名的,有时是加密的)。然后,每次调用都会将该令牌传递到后端服务endpoint,在后端服务endpoint上检查该令牌的有效性,这也不是OAuth的

  • 我已成功完成此处的快速入门演示: https://developers.google.com/drive/api/v3/quickstart/python 我想更进一步,开始上传文件和文件夹。为此,我将范围替换为:SCOPES=['https://www.googleapis.com/auth/drive'] 我也已经把行刑换成了 然后我得到一个错误:GoogleAppClient。错误。Http

  • 开发一个spring boot应用程序,实现基于spring boot安全的基本身份验证数据库的安全。实现了UserDetailsService并覆盖了loadUserByUsername方法。通过此方法,我发现用户名、密码和角色信息已成功地从数据库用户表中检索到。 我的UserDetailsService loadUserByUsername 返回DaoAUthenticationProvide