22

我有 android、google 授权问题(类似于.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. 活动!= null,client_id = 123456789.apps.googleusercontent.com,accountName 是有效的电子邮件(使用帐户选择器选择)
  3. http://plus.google.com/u/0/apps中的accountName有关于我的项目的记录:<Project Name> -------- 应用和购买活动--------您的圈子
  4. 我有android.permission.GET_ACCOUNTS
  5. appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "") 的相同异常
  6. 与 GoogleAuthUtil.getToken(activity, accountName, scopes) 相同的异常

解决了

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

即像这样:

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

4 回答 4

7

在 Google Developer Console 的 APIs & Auth 部分中,单击凭据。

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

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

于 2014-09-15T21:43:42.960 回答
0

对我来说,它发生在我更改 gradle 文件中的“applicationId”时。确保启用 API 时在开发者控制台中具有相同的 applicationId 或 packagename。

于 2016-03-24T14:26:28.160 回答
0

将 GoogleApiCliente 中添加的范围更改为 Plus.SCOPE_PLUS_LOGIN。这对我有用。

googleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(Plus.API)
        .addScope(Plus.SCOPE_PLUS_LOGIN)
        .build();
于 2015-11-05T13:13:46.120 回答
0

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

于 2015-11-04T11:02:29.200 回答