Google服务帐户和工作表权限

时间:2018-04-15 01:17:33

标签: oauth-2.0 google-api google-oauth google-api-client service-accounts

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

首先,我实施了常规" 3-legged"在我的本地后端部署上进行OAuth 2.0身份验证,它工作正常,但由于后端将部署在云中而没有任何浏览器等,因此它不是最佳选择。

所以我决定使用服务帐户OAuth流程:创建了Google服务帐户并重构了我的代码以使用它代替AuthCodeFlow,但我看到了403 Forbidden"来电者没有权限"。 据我所知,服务帐户不是我'对于谷歌,所以我必须让它访问该表,我的'帐户,但我不能这样做,因为我的公司的政策,禁止与我们的域外的人共享文件,并且由于服务帐户有@ myprject.iam.gserviceaccount.com域我无法&# 39;访问它。

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

P.S。我可以尝试与我的服务台沟通,并询问他们是否可以将此gserviceaccount.com添加到白名单等,但这将花费相当多的时间,但结果也无法保证..

谢谢!

1 个答案:

答案 0 :(得分:1)

服务帐户访问工作表的唯一方法是使用服务帐户电子邮件地址共享工作表。您无法更改由Google设置的服务帐户电子邮件地址。

您可以将工作表设置为公开,然后就可以阅读,但我感觉您的公司也不会喜欢这个想法。

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