2014-03-12 171 views
5

的Android登录我想把你登录到谷歌使用这些指南的工作: 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

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

用户第一次打开您的应用程序时,您可以请求与您的网站client_id相同的id_token。如果您已经知道用户的电子邮件地址,则不需要额外的用户同意,因为id_token只是一个识别标记。然后,您可以验证您的家庭服务器中是否存在该帐户,而无需额外的人机交互。如果该帐户不存在,您可以获取授权码并使用CrossClientAuth技术将其发送到您的主服务器。在您的家庭服务器获得授权后,您的Android应用程序应能够通过简单地请求这些令牌来获得access_tokens w/o进一步的批准。

+0

应该在Google开发者控制台中创建已安装的应用程序和Web应用程序? –

+0

是的,在同一个项目中。分别使用“Wep应用程序”和“Android”类型。 – breno