【问题标题】:GoogleAuthUtil and PlusClientGoogleAuthUtil 和 PlusClient
【发布时间】:2013-08-02 08:21:42
【问题描述】:

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

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

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

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

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 Service 应用程序,您仍然需要手动获取用户配置文件...

【问题讨论】:

    标签: android google-plus


    【解决方案1】:

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

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

    但是,PlusClient 让您更轻松,因为它会为您在 Java POJO 和 JSON 之间进行转换,为您管理缓存、离线访问和 OAuth 令牌。

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

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

    【讨论】:

    • 是的,它不应该,但由于某种原因,它要求进行两次身份验证。谈论 PlusClient - 它是否需要安装 Google+ 应用程序(例如 Facebook SDK 在这种情况下使用网络对话框)?
    • PlusClient 不需要 Google+ 应用程序。它只需要 Google Play 服务。你能发布你的代码吗?
    【解决方案2】:

    可能你忘了匹配PlusClientgetToken的范围:

    new PlusClient
      .Builder(this, this, this)
      .setScopes(Scopes.PLUS_LOGIN, "https://www.googleapis.com/auth/userinfo.email")
      .build();
    

    【讨论】:

    • 嘿@ASGM,这曾经对我有用,但就在几天前它停止工作,现在它抛出这个错误 com.google.android.gms.auth.GoogleAuthException: Unknown。知道为什么吗?我的瞄准镜有问题吗? gist.github.com/lawloretienne/7351151
    • @toobsco42 不幸的是,我不是要问的人。我的编辑纯粹是风格上的。但希望 Iury Ramos 会有答案(通过评论答案,他们也应该得到通知)。
    【解决方案3】:

    “实际上,我想要的只是检索基本的用户信息,例如用户配置文件图标”:

    您可以通过一键体验使用Auth.GOOGLE_SIGN_IN_API

    如果您有服务器并且想要将用户信息传递到您的服务器,请确保使用ID token flow

    对于过去使用 GoogleAuthUtil / Plus.API / PlusClient 的所有人,请查看此Google Sign-In best practice blog post 以确保安全性和最佳用户体验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2023-03-18
      • 2013-08-09
      • 1970-01-01
      相关资源
      最近更新 更多