我正在尝试使用这些指南登录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和网站一样?如果我正在尝试的方法是唯一的方法,我会期望更多的资源。或者,如果有另一种替代解决方案,我很想知道。 感谢。
答案 0 :(得分:1)
确实,正确的方法是使用CrossClientAuth方向。
用户首次打开您的应用程序时,您可以请求与您的网站client_id相等的id_token。如果您已经知道用户的电子邮件地址,则无需其他用户同意,因为id_token只是一个标识令牌。然后,您可以验证您的家庭服务器中是否存在该帐户,而无需进行其他人工干预。如果该帐户不存在,您可以使用CrossClientAuth技术获取授权代码并将其发送到您的主服务器。在您的家庭服务器获得授权后,您的Android应用程序应该能够通过简单地请求此类令牌获得access_tokens而无需进一步批准。