如何使用"公共API访问"从Android访问Google API,而不是用户身份验证

时间:2015-05-15 17:21:12

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

背景

我认为从Android访问Google服务的推荐方法是使用Google APIs Client Library for Java(对于某些服务也会推荐播放服务)。

如果您想访问用户的帐户,可以使用oauth2对用户进行身份验证,但是如果您想要访问自己的服务(例如我想要访问属于我的Google云端存储) app engine project)。

服务帐户存在问题

我在这里看到的很多是使用服务帐户,我已经在服务器端使用它们并发现它们是一个相对简单的解决方案,但这需要您部署您的私钥,所以我不会&#39 ;认为这适用于公共Android应用程序。

解决方案:公开API访问

如果您使用'凭据'云控制台的页面: https://console.developers.google.com/project/[your_project]/apiui/credential
很明显,他们希望你使用' public API access key'对于我所描述的情况。看起来这不是基于OAUTH的。

我认为我仍然会使用GoogleCredential'为此,但在credential builder的文档中,我不知道如何做到这一点。设置的客户端功能似乎与oauth2访问(使用客户端ID /秘密)有关。

问题

如何使用'公共API访问权限'从Android应用访问Google服务的关键。

或者,如果我对服务帐户有误 - 并且他们确实是推荐的解决方案,那么请向我展示一些证据,因为它肯定会让我觉得它们不适合公开发布的应用程序。

1 个答案:

答案 0 :(得分:0)

好消息是它更容易。您可以使用服务帐户(即专用于您的应用的全新帐户)或常规帐户。

对于您在应用中嵌入密钥的服务帐户,对于您在应用中嵌入刷新令牌的常规帐户。在这两种情况下,请注意安全风险并使用必要的最小范围。

您可以按照How do I authorise an app (web or installed) without user intervention? (canonical ?)

中的步骤获取刷新令牌,而无需编写任何代码