GoogleAuthException:未知(android)

时间:2013-09-28 20:39:58

标签: android google-oauth

我有Android,谷歌授权问题(类似于.GoogleAuthException: Unknown while doing Google SSO. - 没有答案):

09-29 00:04:38.328: W/System.err(15623): com.google.android.gms.auth.GoogleAuthException: Unknown
09-29 00:04:38.328: W/System.err(15623):    at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)

执行以下代码时可重现:

String scopesString = Scopes.PLUS_LOGIN + " " + Scopes.PLUS_PROFILE;
String scopes = "oauth2:server:client_id:" + Consts.GOOGLE_PLUS_SERVER_CLIENT_ID + ":api_scope:" + scopesString;
OR
String scopes = "audience:server:client_id:" + Consts.GOOGLE_PLUS_SERVER_CLIENT_ID;
Bundle appActivities = new Bundle();
appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "http://schemas.google.com/AddActivity http://schemas.google.com/BuyActivity");
GoogleAuthUtil.getToken(activity,  accountName, scopes, appActivities);

以下是一些注释:

  1. 我可以使用GoogleAuthUtil.getToken获取访问令牌(activity,accountName,“oauth2:”+ scopesString)
  2. activity!= null,client_id = 123456789.apps.googleusercontent.com,accountName是有效的电子邮件(通过帐户选择器选择)
  3. <{3}}中的
  4. accountName有关于我的项目的记录:&lt;项目名称&gt; -------应用和购买活动--------你的圈子
  5. 我有android.permission.GET_ACCOUNTS
  6. 与appActivities.putString相同的例外(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES,“”)
  7. 与GoogleAuthUtil.getToken(activity,accountName,scopes)相同的例外
  8. 解决

    1. 您应该有2个客户端ID:已安装应用(Android)和服务1。你应该在这里使用Service one。
    2. 然后你会得到UserRecoverableAuthException:NeedPermission。你应该处理异常
    3. 即。像这样:

      } catch (UserRecoverableAuthException e) {
      activity.startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION);
      }
      

4 个答案:

答案 0 :(得分:7)

在Google Developer Console中,在API&amp;验证部分单击凭据。

您可能已经拥有Android应用程序的&#34;客户端ID&#34;并正在使用该客户端ID。您需要做的是创建一个新的客户ID并选择&#34;服务帐户&#34;为你的后端。

您必须使用此客户端ID,而不是Android客户端ID。

答案 1 :(得分:0)

我收到了Unknown错误,因为我使用我的发布密钥库注册了我的SHA1哈希。使用调试密钥库注册新应用程序解决了我的问题。

答案 2 :(得分:0)

将GoogleApiCliente中添加的范围更改为Plus.SCOPE_PLUS_LOGIN。这项工作适合我。

googleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Plus.API)
        .addScope(Plus.SCOPE_PLUS_LOGIN)
        .build();

答案 3 :(得分:0)

对我而言,当我更改gradle文件中的“applicationId”时发生了这种情况。启用API时,请确保在开发人员控制台中具有相同的applicationId或packagename。