我正在尝试使用这些指南登录谷歌: http://www.androidhive.info/2014/02/android-login-with-google-plus-account-1/ https://developers.google.com/+/mobile/android/getting-started
登录有效,我能够正确登录。现在我需要的下一步是将访问和刷新 token 发送到我的服务器,以便服务器可以访问用户的谷歌帐户详细信息(图片/姓名等)并将其作为新用户保存在数据库中。
我尝试使用此处的代码获取访问 token : https://github.com/googleplus/gplus-photohunt-client-android/blob/master/src/com/google/plus/samples/photohunt/auth/AuthUtil.java
当我在此处插入访问 token 时: https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=
我看到 access_type 是“online”。我相信为了接收刷新 token 并使其正常工作,我需要请求用户进行离线访问。我不确定如何从上面指南中提供的代码中做到这一点。
我怀疑它一定在这里:
// 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 应用程序如何处理多个平台上的用户注册?喜欢安卓和网站?如果我正在尝试的方法是唯一的方法,我会期待更多的资源。或者,如果有另一种替代解决方案,我很想知道。 谢谢。
最佳答案
确实正确的方法是使用 CrossClientAuth 方向。
用户第一次打开您的应用程序时,您可以请求一个 id_token w/audience 等于您的网站 client_id。如果您已经知道用户的电子邮件地址,则不需要额外的用户同意,因为 id_token 只是一个标识 token 。然后,您可以验证该帐户是否存在于您的家庭服务器中,而无需额外的人工交互。如果该帐户不存在,您可以获得授权码并使用 CrossClientAuth 技术将其发送到您的主服务器。在您的主服务器获得授权后,您的 Android 应用程序应该能够通过简单地请求此类 token 来获取 access_tokens,而无需进一步批准。
关于Android登录与谷歌离线访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351875/