GCP 服务到服务 OAuth 解决方法 Cloud Run 到 Google Forms API

问题描述 投票:0回答:1

我希望授权我的 Cloud Run 应用程序(NodeJS + Express + Axios)能够读取我使用的一些 Google 表单的 Google 表单响应。 Cloud Run 应用程序充当 API,对表单的响应进行整理和格式化。除了需要使用 OAuth 授权 Cloud Run 应用程序之外,我已经完成了所有工作。在我的测试中,我能够使用 Insomnia 来实现此目的,它向我提供了实现 OAuth 的登录屏幕,但在部署中这将不是一个选项,因为另一个应用程序(Discord 机器人)将访问该 API。

我的问题是,我是否可以永久授权 Cloud Run 应用程序(通过服务帐户或 IAM)访问这些表单(只需阅读即可)?

我选择 GCP 的原因是,这个项目中我无法更改的一个元素是用于收集响应的 Google 表单 - 因此,我可能天真地认为 GCP 是最容易处理 Google 表单权限的,因为他们处于同一个生态系统中。

我尝试通过 Express 应用程序处理 OAuth,利用服务帐户/令牌,但是(据我所知)这不能在最终用户需要使用有效的 google 帐户登录到 OAuth 屏幕的情况下自行授权。

我尝试使用其他形式的身份验证访问 Forms API - 似乎 Forms API 仅适用于 OAuth。

我尝试为每个表单授予对 Cloud Run 服务帐户的“编辑者”访问权限。

  • 旁注:在我的试错方法中,我现在有很多服务帐户 - 有没有一种简单的方法可以找出我的 Cloud Run 应用程序实际上“运行”的是哪个服务帐户?

我现在创建了一个解决方法(这很糟糕),即使用 Google Apps 脚本来提取 Google Forms 数据并返回它(所以现在我有我的第一个自定义 API(Cloud Run)对第二个自定义 API 执行 GET 请求) API(应用程序脚本))。除了Apps脚本需要每7天手动授权一次(“测试”应用程序脚本的授权仅持续7天)之外,这是有效的。这个解决方案对我来说没有好处。

注意:我不是工作区用户 - 我使用的是 GCP 免费套餐。这是一个业余爱好项目。

  • 应用程序脚本和云运行应用程序位于同一个GCP项目中
  • 我尝试利用服务帐户,但无法弄清楚它们在这种情况下如何提供帮助(似乎没有与谷歌表单相关的“权限”选项)
  • 我自己的研究表明,事实上,我正在做的事情是无法完成的(如果非常了解 GCP IAM/权限的人可以为我确认这一点,那么这将是一个有效的答案)
google-cloud-platform google-forms service-accounts google-cloud-iam google-forms-api
1个回答
-2
投票

IBM 1944。谷歌 2024。停止 Nimbus 项目。

© www.soinside.com 2019 - 2024. All rights reserved.