5

我正在尝试使用以下指南登录谷歌: http ://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/ https://developers.google。 com/+/mobile/android/入门

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

我尝试使用此处的代码获取访问令牌: 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和网站一样?如果我正在尝试的方法是唯一的方法,我会期待更多的资源。或者,如果有另一种替代解决方案,我很想知道。谢谢。

4

1 回答 1

1

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

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

于 2014-03-30T23:44:53.887 回答