Android GoogleAuthUtil和PlusClient

Android GoogleAuthUtil和PlusClient,android,google-plus,Android,Google Plus,根据需要,您应该连接PlusClient,然后才可以使用GoogleAuthUtil获取令牌 但在我的应用程序中,我有一个反向场景:我已经通过GoogleAuthUtil.getToken(应用程序、电子邮件、GoogleAuth\u范围)获得了令牌。当我尝试使用PlusClient时,会发生两件事: setAccountName没有任何有价值的效果(除非设置错误的帐户时引发异常),因为帐户选择器对话框仍将显示 用户必须再次登录(接受应用程序) 实际上,我只想从GoogleAuthUtil检索基

根据需要,您应该连接PlusClient,然后才可以使用GoogleAuthUtil获取令牌

但在我的应用程序中,我有一个反向场景:我已经通过GoogleAuthUtil.getToken(应用程序、电子邮件、GoogleAuth\u范围)获得了令牌。当我尝试使用PlusClient时,会发生两件事:

  • setAccountName没有任何有价值的效果(除非设置错误的帐户时引发异常),因为帐户选择器对话框仍将显示
  • 用户必须再次登录(接受应用程序)

  • 实际上,我只想从GoogleAuthUtil检索基本的用户信息,比如用户配置文件图标和姓名,以及他的电子邮件和令牌

    p.S.是的,有,但它只能与API 14一起使用

    更新

    我仍然不知道GoogleAuthUtil和PlusClient是如何连接的,也不知道如何强迫他们一起工作。唯一有效的解决方案(在GMS样本中找到)是提取


    但这很奇怪-您在设备上安装了600KB的库类+Google Play Service应用程序,并且您仍然必须手动获取用户配置文件…

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

    然而,PlusClient使这变得更容易,因为它为您在Java POJO和JSON之间进行转换,为您管理缓存、脱机访问和OAuth令牌

    如果使用
    PlusClient.Builder.setAccountName()
    和有效的Google帐户名构造PlusClient,则不应从显示帐户选择器的PlusClient获取意图


    另外,如果您在对
    getToken()
    的调用中请求相同的作用域(必须包括),并且在构造PlusClient时,不应要求用户再次同意。

    可能您忘记了匹配
    PlusClient
    getToken
    的作用域:

    new PlusClient
      .Builder(this, this, this)
      .setScopes(Scopes.PLUS_LOGIN, "https://www.googleapis.com/auth/userinfo.email")
      .build();
    
    “实际上,我只想检索基本用户信息,如用户配置文件图标”:

    您可以使用一次点击体验

    如果您有服务器并且希望将用户信息传递到服务器,请确保使用


    对于过去使用过GoogleAuthUtil/Plus.API/PlusClient的所有用户,请查看此文件以确保安全性和最佳用户体验。

    是的,不应该这样做,但出于某种原因,它要求进行两次身份验证。谈论PlusClient-是否需要安装Google+应用程序(例如,在这种情况下,Facebook SDK使用web对话框)?PlusClient不需要Google+应用程序。它只需要谷歌播放服务。你能发布你的代码吗?嘿@ASGM,这曾经对我有用,但就在几天前它停止工作了,现在它抛出这个错误com.google.android.gms.auth.GoogleAuthException:未知。知道为什么吗?我的示波器有问题吗@toobsco42不幸的是,我不是该问的人;我的编辑纯粹是文体上的。但希望尤里·拉莫斯能得到答案(通过评论答案,他们也应该得到通知)。