当前位置: 首页 > 知识库问答 >
问题:

在Google Compute Engine上使用应用程序默认凭据访问Sheets API

阎涵忍
2023-03-14

ADC(应用程序默认凭据)工作流是否只支持Google Cloud API(例如,支持Google Cloud Storage API,但不支持Google Sheet API)?

我指的是Google.auth的默认方法--不必在代码中存储任何私钥,这是一个巨大的胜利,也是有效利用ADC(应用程序默认凭据)设置的主要好处。

如果我将google_application_credentials环境变量设置为私钥文件,例如key.json,则以下代码可以工作。这与google.auth包的步骤1中的default方法内联:1。如果环境变量GOOGLE_APPLICATION_CREDENTIALS设置为有效服务帐户JSON私钥文件的路径,则加载并返回该文件。

import google.auth
from apiclient import discovery

credentials, project_id = google.auth.default(scopes=['https://www.googleapis.com/auth/spreadsheets'])

sheets = discovery.build('sheets', 'v4', credentials=credentials)

SPREADSHEETID = '....'

result = sheets.spreadsheets().values().get(spreadsheetId=SPREADSHEETID, range='Sheet1!A:B').execute()

print result.get('values', [])

现在,看看方法的步骤4:4。如果应用程序运行在Compute Engine或App Engine flexible环境中,则从元数据服务获取凭据和项目ID。

如果删除Google Compute实例上的Google_Application_Credentials环境变量,则会出现以下错误:

googleapiclient.errors.httperror:

共有1个答案

穆理
2023-03-14

根据本文档,您使用的作用域需要OAuth2.0授权。因此,需要用户登录和同意。

 类似资料:
  • 我创建了一个具有并发gcloud应用程序的Dialogflow代理。但是,当我尝试将它集成到Node.js后端时,它似乎访问了错误的应用程序默认凭据。 我可以确认它正在验证身份验证是否成功,因为当我运行以下代码时,它的控制台记录了正确的项目ID(diagnosistest-56e81): null 当我执行此操作时,会得到不同的错误消息:

  • 我当前正在尝试访问云API,但收到以下错误:

  • 它说要使用以下命令: 在Google Shell中,我尝试了以下操作: 我知道命令指向的是正确的文件位置。如何成功验证应用程序默认凭据?

  • 我正在尝试在 Go 应用引擎部署上使用具有域范围委派 (DwD) 的服务帐户。 我已按照使用 Google 应用程序默认凭据的步骤将服务帐户与应用引擎配合使用。 我让代码在我的开发计算机上本地运行,但我被困在从我的域中检索实际数据。 我用的是Admin SDK。在“向您的服务帐户授予域范围的权限”一节中,它说我的“服务帐户需要模拟其中一个用户来访问Admin SDK Directory API”。

  • 问题内容: 我最近将gcloud库从118.0.0更新为132.0.0,并且remote_api_shell立即不再起作用。我经历了许多重新登录的过程,通过gcloud设置了应用程序默认凭据,并使用了服务帐户和环境变量。所有排列均失败,并显示相同的错误消息: 经过131.0.0和130.0.0的重新修订后,我回到118.0.0,重新登录,一切正常。 更新gcloud之后,我没有更新正在运行的应用程