Google 服务帐户和工作表权限

Google service account and sheets permissions

我有一个 Java 后端(spring + google-oauth-client)应该能够访问 Google.sheets 并从那里解析一些数据.

首先,我在我的本地后端部署上实施了常规的“三足式”OAuth 2.0 身份验证,它运行良好,但由于后端将在没有任何浏览器的情况下部署在云中,因此这不是最佳选择。

所以我决定使用服务帐户 OAuth 流程:创建 google 服务帐户并重构我的代码以使用它而不是 AuthCodeFlow,但我看到 403 Forbidden "The caller doesn't have permissions"。 据我了解,google 的服务帐户不是 'me',因此我必须允许它访问 'my' 帐户上的 sheet,但我不能这样做,因为我公司的政策禁止与我们域外的人共享文档,并且由于服务帐户具有 @myprject.iam.gserviceaccount.com 域,因此我无法访问它。

也许有办法解决这个问题,因为这个服务帐户是从我的帐户创建的,我的帐户拥有 sheet 的所有者访问权限? 如果不是,那么在这种情况下(无需用户参与)服务器到服务器 OAuth 的最佳方法是什么?

p.s。我可以尝试联系我的服务台并询问他们是否可以将此 gserviceaccount.com 添加到白名单等,但这将花费很多时间并且结果也无法保证..

谢谢!

服务帐户访问 sheet 的唯一方法是您与服务帐户电子邮件地址共享 sheet。您无法更改由 Google.

设置的服务帐户电子邮件地址

您可以将 sheet 设置为 public,这样它就可以阅读了,但我觉得您的公司也不会喜欢这个主意。

我建议您返回到您的 oauth2 选项并在您的计算机上对其进行身份验证,然后将刷新令牌复制到云服务器,然后它应该能够使用它。