android - GoogleAuthUtil 和 PlusClient

标签 android google-plus

根据https://gist.github.com/ianbarber/5170508您应该与 PlusClient 连接,然后才使用 GoogleAuthUtil 获取 token 。

但在我的应用程序中,我有向后的情况:我已经通过 GoogleAuthUtil.getToken(app, email, GOOGLE_AUTH_SCOPE) 获得了 token 。当我尝试使用 PlusClient 时,会发生两件事:

  1. setAccountName 没有任何有值(value)的作用(除非在错误的帐户设置时抛出异常),因为帐户选择器对话框仍会显示
  2. 用户必须再次登录(接受申请)

实际上,我想要的只是从 GoogleAuthUtil 检索基本的用户信息,例如用户个人资料图标和姓名,以及他的电子邮件和 token 。

P.S. 是的,有 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 的库类 + Google Play 服务应用,但您仍然需要手动获取用户个人资料...

最佳答案

如果您不想使用 PlusClient,一个选项是使用从 getToken() 收到的 token 自行访问 REST api:

https://developers.google.com/+/api/latest/people/get

然而,PlusClient 使这对您来说变得更加容易,因为它为您在 Java POJO 和 JSON 之间进行转换,为您管理缓存、离线访问和 OAuth token 。

如果您使用 PlusClient.Builder.setAccountName() 和有效的 Google 帐户名构建 PlusClient,则不应从 PlusClient 获得显示帐户选择器的 Intent 。

此外,如果您在调用 getToken() 时请求相同的范围(必须包含 https://www.googleapis.com/auth/plus.login ),并且当您构造 PlusClient 时,它不应该要求用户再次同意.

关于android - GoogleAuthUtil 和 PlusClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993587/

相关文章:

ios - 我应该在导入 GooglePlus.framework 时检查 "Copy items if needed"吗?

android - 如何使用 android.view.ViewDebug 静态方法?

java - Fragment 和 MainActivity java 代码之间的区别?

css - Less css - Id with variable, google plus, cover all

javascript - Google 登录使用 Hello.js 返回用户名 'Undefined"

google-plus -/u/0 在 google plus 网址中

php - 从mysql JSON获取数据到Listview从模型获取ID

android - 如何使用 PDFBox for Android 从 tiff 图像创建 pdf?

Android CardView cardElevation 和阴影不起作用

cordova - 如何刷新 google+ 身份验证 token 以进行 S3 访问