【问题标题】:GoogleAuthException: Unknown (android)GoogleAuthException:未知(安卓)
【发布时间】:2013-10-04 23:19:17
【问题描述】:

我有安卓、谷歌授权问题(类似于.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. http://plus.google.com/u/0/apps 中的帐户名称有关于我的项目的记录: -------- 应用和购买活动--------您的圈子
  4. 我有android.permission.GET_ACCOUNTS
  5. appActivities.putString(GoogleAuthUtil.KEY_REQUEST_VISIBLE_ACTIVITIES, "") 的相同异常
  6. 与 GoogleAuthUtil.getToken(activity, accountName, scopes) 相同的异常

已解决

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

即像这样:

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

【问题讨论】:

  • 嗯,我很确定以“oauth2:”开头的版本是正确的。您能否从异常中获取消息,或者查看 logcat?
  • 从什么时候开始,GoogleAuthUtil.getToken() 方法开始为未在设备上注册的电子邮件抛出带有消息“BadUsername”的 GoogleAuthException,而不是之前带有消息“Non existing account”的异常 IllegalArgumentException '电子邮件地址'” ? developer.android.com/reference/com/google/android/gms/auth/…, java.lang.String, java.lang.String)
  • “服务一号”是什么意思?我可以从开发者控制台获取它吗?

标签: android google-oauth


【解决方案1】:

在 Google 开发者控制台的 APIs & Auth 部分,点击凭据。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-09-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-20
          相关资源
          最近更新 更多