通过谷歌离线访问Android登录

时间:2014-03-12 12:40:17

标签: android google-oauth google-authentication google-login

我正在尝试使用这些指南登录Google工作: http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/ https://developers.google.com/+/mobile/android/getting-started

登录正常,我可以正确登录。现在我需要的下一步是将访问和刷新令牌发送到我的服务器,以便服务器可以访问用户谷歌帐户详细信息(图片/名称等)并将其作为新用户保存在数据库中。

我尝试使用以下代码获取访问令牌: https://github.com/googleplus/gplus-photohunt-client-android/blob/master/src/com/google/plus/samples/photohunt/auth/AuthUtil.java

当我在这里插入访问令牌时: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=

我看到access_type是“在线”。我相信为了接收刷新令牌并使其工作,我将需要请求用户离线访问。我不确定如何从上面指南中的代码中做到这一点。

我怀疑它一定在这里:

// Initializing google plus api client
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this).addApi(Plus.API, null)
                .addScope(Plus.SCOPE_PLUS_LOGIN).build();

但是我没办法在这里将访问类型设置为离线。 在这一点上,这整个过程听起来非常复杂,我希望之前有过这样做的人有一个指南/教程写在某个地方,这样可以更容易理解如何让用户登录到您的Android设备并将该用户保存在您的数据库中在您的服务器上,所以他们都是同步的。任何帮助和指示都将不胜感激。

编辑1: 在阅读谷歌文档更多,有可能让流程工作,如上所述: https://developers.google.com/accounts/docs/CrossClientAuth 所有Android应用程序如何处理多个平台上的用户注册?像Android和网站一样?如果我正在尝试的方法是唯一的方法,我会期望更多的资源。或者,如果有另一种替代解决方案,我很想知道。 感谢。

1 个答案:

答案 0 :(得分:1)

确实,正确的方法是使用CrossClientAuth方向。

用户首次打开您的应用程序时,您可以请求与您的网站client_id相等的id_token。如果您已经知道用户的电子邮件地址,则无需其他用户同意,因为id_token只是一个标识令牌。然后,您可以验证您的家庭服务器中是否存在该帐户,而无需进行其他人工干预。如果该帐户不存在,您可以使用CrossClientAuth技术获取授权代码并将其发送到您的主服务器。在您的家庭服务器获得授权后,您的Android应用程序应该能够通过简单地请求此类令牌获得access_tokens而无需进一步批准。