Oauth 2.0 Google服务帐户和工作表权限

Oauth 2.0 Google服务帐户和工作表权限,oauth-2.0,google-api,google-oauth,google-api-client,service-accounts,Oauth 2.0,Google Api,Google Oauth,Google Api Client,Service Accounts,我有一个Java后端(spring+GoogleOAuth客户端),应该能够访问google.sheets并从那里解析一些数据 首先,我在本地后端部署上实现了常规的“三条腿”OAuth 2.0身份验证,它工作得很好,但由于后端将部署在云中而不使用任何浏览器,所以这不是最佳选择 所以我决定使用服务帐户OAuth flow:创建google服务帐户并重构代码以使用它而不是AuthCodeFlow,但我看到403禁止“调用方没有权限”。 据我所知,谷歌的服务账户不是“我”,所以我必须让它访问“我的”账

我有一个Java后端(spring+GoogleOAuth客户端),应该能够访问google.sheets并从那里解析一些数据

首先,我在本地后端部署上实现了常规的“三条腿”OAuth 2.0身份验证,它工作得很好,但由于后端将部署在云中而不使用任何浏览器,所以这不是最佳选择

所以我决定使用服务帐户OAuth flow:创建google服务帐户并重构代码以使用它而不是AuthCodeFlow,但我看到403禁止“调用方没有权限”。 据我所知,谷歌的服务账户不是“我”,所以我必须让它访问“我的”账户上的那张表,但我不能这样做,因为我公司的政策禁止与我们域外的人共享文档,而由于服务账户拥有@myprject.iam.gserviceaccount.com域,我无法访问它

也许有一种方法可以解决这个问题,因为这个服务帐户是从我的帐户创建的,该帐户的所有者可以访问该工作表? 如果没有,在这种情况下(没有用户参与),服务器到服务器OAuth的最佳方法是什么

p、 我可以尝试与我的帮助台沟通,并询问他们是否可以将此gserviceaccount.com添加到白名单等,但这将花费大量时间,而且结果也不能保证


谢谢

服务帐户访问工作表的唯一方法是与服务帐户电子邮件地址共享工作表。您不能更改服务帐户电子邮件地址,这是由谷歌设置的

你可以将表格公开,然后就可以阅读了,但我觉得你的公司也不会喜欢这个想法


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

尝试使用我发布的解决方案