我很难理解Android Google+登录文档
我想支持服务器端访问您的应用程序的“与谷歌签约”,我也想支持跨平台单点登录。但是,还不清楚我是否真的可以做到这两种方式,因为一种是使用GoogleApiClient.connect(),另一种是使用GoogleAuthUtil.getToken()。
如果我尝试同时使用GoogleAuthUtil.getToken()来获取跨平台单点登录的离线令牌和GoogleApiClient.connect(),则用户将使用权限屏幕两次提示。(我还必须设置两次服务器客户端id和范围,这两次设置的范围都是哑的)
有什么想法吗?,我是不是做错什么了?
发布于 2014-02-20 16:37:07
好消息是,你想做的事情是支持的!
您之所以两次看到权限提示,是因为在解决服务器端问题(GoogleApiClient.connect()问题)之前解决客户端问题(GoogleAuthUtil.getToken()问题)。
只有当用户尚未向您的应用程序授予权限时,GoogleApiClient.connect()才会请求权限。GoogleAuthUtil.getToken("oauth2:server:client_id:<server client-id>:api_scope:<scope1> <scope2>")每次都会请求权限,因为您请求的是服务器的脱机访问(刷新令牌)。
要确保只看到权限屏幕一次,必须首先检查服务器是否需要访问令牌,如果不需要,则使用GoogleAuthUtil.getToken()请求访问令牌(这将向用户显示权限屏幕)。一旦确保服务器具有有效的刷新令牌,就可以调用不显示权限屏幕的GoogleApiClient.connect()。
伊恩·巴伯( Ian )写了一篇博文,解释了实现这一流程的方法:
http://www.riskcompletefailure.com/2013/10/google-android-client-server-sign-in.html
post以PlusClient的方式进行谈判,现在已经被GoogleApiClient否决了,但是这个流程仍然有效。
https://stackoverflow.com/questions/21901697
复制相似问题