我有一个 Java 后端(spring + google-oauth-client),它应该能够访问 Google.sheets 并从那里解析一些数据。
首先,我在本地后端部署上实现了常规的“三足”OAuth 2.0 身份验证,它工作得很好,但由于后端将部署在没有任何浏览器的云中,因此这不是最好的选择。
所以我决定使用服务帐户OAuth流程:创建谷歌服务帐户并重构我的代码以使用它而不是AuthCodeFlow,但我看到403 Forbidden“调用者没有权限”。据我所知,服务帐户不是谷歌的“我”,所以我必须让它访问“我的”帐户上的该工作表,但我不能这样做,因为我公司的政策禁止与他人共享文档我们的域,并且由于服务帐户具有 @myprject.iam.gserviceaccount.com 域,我无法授予对其的访问权限。
也许有一种方法可以解决这个问题,因为该服务帐户是从我的帐户创建的,该帐户拥有该工作表的所有者访问权限?如果不是,在这种情况下(无需用户参与)服务器到服务器 OAuth 的最佳方法是什么?
ps 我可以尝试与我的服务台联系,询问他们是否可以将此 gserviceaccount.com 添加到白名单等,但这将花费相当多的时间,而且结果也不能保证。
谢谢!
google-api oauth-2.0 google-api-client google-oauth service-accounts