Google表格使用API​​密钥而不是client_secret.json

时间:2018-03-27 11:20:46

标签: java google-api google-oauth google-spreadsheet-api google-api-java-client

Java Quickstart上的QuickStart.java示例中,他们使用OAuth client ID来识别应用程序,这会弹出一个窗口,要求Google凭据使用该应用程序。您必须下载client_secret.json才能修改Google表格。

我的问题是:您是否可以使用API Key或其他内容来回避弹出窗口,询问Google凭据?而且,如果可能的话,你如何改变Java代码才能做到这一点?

2 个答案:

答案 0 :(得分:4)

您看到的弹出窗口是Oauth2同意屏幕。要访问私人用户数据,您需要获得用户的同意才能访问其数据。

还有另一种选择,称为服务帐户。如果您尝试访问的工作表是您作为开发人员可控制的工作表,那么您可以创建服务帐户凭据,获取服务帐户电子邮件地址并授予服务帐户对工作表的访问权限。

我所知道的使用java的服务帐户访问的最佳示例是Google Analytics(分析),您必须为Google工作表更改它,如果您有任何问题,我可以帮助您。 hello analytics service account.

$update

答案 1 :(得分:4)

API密钥只能在访问创建密钥的项目所拥有的资源时才能工作。

对于电子表格等资源,您通常会访问用户拥有的资源。如果只需拥有一个API密钥即可访问我的私人表格,那将是非常糟糕的。

所以不,我不希望有任何方法可以避免授权使用用户的文档。但是,您应该能够使用Java OAuth library来保留身份验证令牌,这样您就可以避免多次请求它。 (当然,除非用户撤销访问权限。)

正如DalmTo所说,如果您尝试访问项目拥有的资源(或者可以授予项目访问权限),您可以使用服务帐户凭据。请注意,如果您在AppEngine,Google Kubernetes Engine或Google Compute Engine上运行,则该环境的服务帐户凭据应该会自动提供。