Node.js 访问Google Sheets&;谷歌';Google App Engine的非云平台API-NodeJS灵活环境

Node.js 访问Google Sheets&;谷歌';Google App Engine的非云平台API-NodeJS灵活环境,node.js,google-app-engine,google-cloud-platform,google-compute-engine,google-sheets-api,Node.js,Google App Engine,Google Cloud Platform,Google Compute Engine,Google Sheets Api,这里有没有人有在GAE flex环境上运行NodeJS应用程序的经验 我有一个关于验证非云平台Google API(例如Google Drive、Google Sheets等,而不是云存储等)的特定问题 我一直在使用Google的ADC和以下方法: 这在以前对我很有效——我能够使用ADC通过云KMS和云存储进行身份验证 但是,我无法使用Google Sheets API(它基于用户交互将数据写入工作表,以便我可以超级轻松地将此数据提供给业务团队)发布a功能,因为它在本地使用ADC和创建JWT的服

这里有没有人有在GAE flex环境上运行NodeJS应用程序的经验

我有一个关于验证非云平台Google API(例如Google Drive、Google Sheets等,而不是云存储等)的特定问题

我一直在使用Google的ADC和以下方法:

这在以前对我很有效——我能够使用ADC通过云KMS和云存储进行身份验证

但是,我无法使用Google Sheets API(它基于用户交互将数据写入工作表,以便我可以超级轻松地将此数据提供给业务团队)发布a功能,因为它在本地使用ADC和创建JWT的服务客户端密钥文件运行,但不在生产中运行

由于没有关于NodeJS的任何具体例子,我最终陷入了寻找单独的节点文档来解决我的问题的困境

特别是,Sheets API声明我需要使用OAuth 2,但是这些文档说我最好坚持使用ADC: - -

为什么它会与我的GAE服务帐户的JWT本地副本一起工作,而不是与计算引擎服务帐户一起工作?我已经将appengine和compute engine服务帐户电子邮件添加到具有写访问权限的电子表格中,但后者似乎不起作用

我一直遇到相同的错误,我的代码在本地工作,我可以将值附加到我的应用程序引擎电子邮件有权写入的工作表中,但在生产中,我继续遇到相同的错误,即该应用程序没有足够的权限:`“Sheets API返回了一个错误:错误:尝试检索计算引擎内置服务帐户的访问令牌时返回了禁止的错误。这可能是因为计算引擎实例没有指定正确的权限范围。请求的身份验证作用域不足。“ 因此,我还完成了域范围的授权,并完成了我所能找到的关于添加正确访问权限的每一件事

我的主要问题是,我是否能够继续使用这段代码()中列出的方法,还是应该像本文档()中那样使用OAuth2?如果我需要使用OAuth2,如果我甚至无法访问Google的Sheets API而不在我的env变量中加载我自己的凭据,那么使用GAE还有什么意义


我做错什么了吗?

。它使用一个服务帐户,并从一个关键文件创建一个JWT。我的代码作为一个云函数运行,但它可能会为您提供解决GAE问题的方法。

正如Martin所提到的,您可以通过带有节点客户端库的Google Sheets API访问Google Sheets。我将按照该链接进行d细节

以下是总结:

  • 创建服务帐户。将其命名为
    credentials.json
  • 启用GoogleSheetsAPI
  • 复制从步骤1中找到的电子邮件地址
  • 使用电子邮件地址共享谷歌工作表
  • 调用GoogleSheetsAPI,使用上面创建的凭据进行授权
  • 链接:

    • 表API:
    • 节点客户端:

    我在社区中发现了一个类似的问题,即“从Appengine访问Google Drive电子表格”,看看是否有帮助you@Digil谢谢你的提示!我看了一下,这是有道理的,但是,正如一年前发布的一样,我想知道自那以后情况是否发生了变化,特别是在flex环境上。。GIE文档不断地说,使用ADC是我的程序“自动”确定所需的正确凭证的最佳方式,但我不得不考虑这种特殊情况,并在GCP上运行的机器上使用OAuth2,试图访问谷歌所拥有的另一个服务。我会想一想,如果真的没有办法让ADC工作,我可能不得不这么做。非常感谢。要使用OAuth 2.0访问Google API,您可以查看链接。你可以直接从那里启用GoogleSheetsAPI。我已经这样做了,但我的问题仍然是。。。ADC的节点库功能是否支持“自动”生成这些凭据?我不确定,而且很难从文档中分辨出来,因为它在本地工作,这意味着它必须从JWT生成正确的凭据,但不能在GCP内生产?