在Java Quickstart上的QuickStart.java
示例中,他们使用OAuth client ID
来识别应用程序,这会弹出一个窗口,要求Google凭据使用该应用程序。您必须下载client_secret.json
才能修改Google表格。
我的问题是:您是否可以使用API Key
或其他内容来回避弹出窗口,询问Google凭据?而且,如果可能的话,你如何改变Java代码才能做到这一点?
答案 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上运行,则该环境的服务帐户凭据应该会自动提供。