根据https://gist.github.com/ianbarber/5170508您应该连接plusclient,然后才能使用googleauthutil获取令牌。
但在我的应用程序中,我有一个向后的场景:我已经通过googleauthutil.gettoken(app、email、google-auth-scope)获得了令牌。当我尝试使用plusclient时,会发生两件事:
setaccountname没有任何有价值的效果(除非它在错误的帐户设置时引发异常),因为帐户选择器对话框仍将显示
用户必须再次登录(接受应用程序)
实际上,我只想从googleauthutil中检索基本的用户信息,比如用户配置文件图标和拥有电子邮件和令牌的名字。
是的,这里有http://developer.android.com/guide/topics/providers/contacts-provider.html#UserProfile但是它只适用于api 14
更新
我仍然不知道googleauthutil和plusclient是如何连接起来的,也不知道如何强迫他们一起工作。唯一有效的解决方案(在gms样品中发现)是提取https://www.googleapis.com/oauth2/v1/userinfo?access_token=token
但这很奇怪-你在设备上安装了600kb的库类+谷歌游戏服务应用程序,你仍然需要手动获取用户配置文件…
最佳答案
如果您不想使用plusclient,一个选项是使用从getToken()
接收到的令牌亲自命中rest api:
https://developers.google.com/+/api/latest/people/get
但是PulsCube对您来说更容易,因为它可以在Java PoJOS和JSON之间转换,管理缓存、脱机访问和OAuth令牌。
如果使用带有有效google帐户名的PlusClient.Builder.setAccountName()
构造plusclient,则不应从显示帐户选择器的plusclient获取意图。
另外,如果您在对getToken()
的调用中请求相同的作用域(必须包含https://www.googleapis.com/auth/plus.login),并且在构建plusclient时,不应要求用户再次同意。