Python 谷歌表单+;GoogleCredentials=";验证范围不足”;

Python 谷歌表单+;GoogleCredentials=";验证范围不足”;,python,google-sheets-api,Python,Google Sheets Api,我正在创建一个需要阅读大量电子表格的服务器应用程序。因此,我们使用的是GoogleCredentials.get\u application\u default()fromoauth2client.client,因为服务器可以访问服务帐户。对于本地开发,我想使用我的个人凭证,所以我使用的是谷歌云SDK。我使用了gcloud auth应用程序默认登录名,以确保它正常工作 因此,创建服务非常简单: from oauth2client.client import GoogleCredentials f

我正在创建一个需要阅读大量电子表格的服务器应用程序。因此,我们使用的是
GoogleCredentials.get\u application\u default()
from
oauth2client.client
,因为服务器可以访问服务帐户。对于本地开发,我想使用我的个人凭证,所以我使用的是谷歌云SDK。我使用了
gcloud auth应用程序默认登录名
,以确保它正常工作

因此,创建服务非常简单:

from oauth2client.client import GoogleCredentials
from googleapiclient.discovery import build

credentials = GoogleCredentials.get_application_default()
service = build('sheets', 'v4', credentials=credentials)
事实上,到目前为止,对于一系列谷歌云产品来说,这一切都很好。 但是,当使用Sheets API时,我在执行任何请求时会出现以下错误:

googleapiclient.errors.HttpError: 
<HttpError 403 when requesting https://sheets.googleapis.com/v4/spreadsheets/...
returned "Request had insufficient authentication scopes.">
但是,这似乎没有任何效果,因为
create\u scoped
方法只返回self()

  • 我在那个项目上创建了一个服务帐户,并将环境变量
    GOOGLE\u APPLICATION\u CREDENTIALS
    设置为指向它。这也可以很好地工作,可能是因为它使用了
    ServiceAccountCredentials
    ,它实际上实现了
    create\u scoped
    方法
  • 我正在使用最新版本的google api python客户端(1.6.2)和oauth2client(4.0.0)
  • 我是在正确的轨道上,还是我只是错过了一些真正愚蠢的东西?

    我想我在下面的问题中找到了(稍微令人失望的)答案:

    如果使用Google Cloud SDK gcloud auth应用程序默认登录命令提供您自己的身份供本地使用,则作用域集当前是固定的,尽管它包括所有Google Cloud API作用域。如果需要此集合之外的作用域,建议使用下载的服务帐户密钥


    尝试使用
    apiclient.discovery
    而不是
    googleapiclient.discovery
    。当我将太多的参数传递给
    build()
    时,我也遇到了同样的问题,但一旦我删除了那些多余的参数,它就起作用了,我的代码与你的代码的唯一区别就是我从哪个模块中提取
    发现

    引用似乎不再存在于链接文档中
    credentials = GoogleCredentials.get_application_default()
    scoped_creds = credentials.create_scoped(SCOPES)