10

有关更多上下文,这篇文章在这篇文章之后

为了解决我以前的问题,我尝试按照 Tim Bray 在这里提出的解决方案:Verifying Back-End Calls from Android Apps

我在 Google API 控制台中声明了两个项目以获取两个客户端 ID

  • 第一个作为“Web 应用程序”,以“localhost”作为主机名(有关系吗?)
    • 客户 ID:XXXXXXXXXX.apps.googleusercontent.com
  • 第二个作为 Android 应用程序,具有在 AndroidManifest.xml 和 SHA1 指纹中指定的包名称(尝试使用 debug.keystore 和 [my].keystore)
    • 客户 ID:YYYYYYYYYY.apps.googleusercontent.com

不幸的是,我在 Android 方面遇到了一个例外:

com.google.android.gms.auth.GoogleAuthException: Unknown
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:66)
at fr.barles.android.activity.LoginActivity$1.doInBackground(LoginActivity.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
at java.util.concurrent.FutureTask.run(FutureTask.java:137)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1102)

在线上:

return GoogleAuthUtil.getToken(LoginActivity.this, account[0], "audience:server:client_id:XXXXXXXXXX.apps.googleusercontent.com");

我做错了什么?

提前致谢

4

5 回答 5

14

几个小时后,我发现在您的范围字符串 ( "audience:server:client_id:...") 中,您必须使用 Web 应用程序的客户端 ID,而不是 android 的。

安卓应用的客户端 ID 未使用。它在这里只是为了将您的 android 应用程序的包名称与您的 Web 应用程序链接起来。

于 2014-02-28T19:14:18.523 回答
4

这两个客户端 ID 应该属于同一个项目。

于 2013-01-18T23:30:03.330 回答
3

没有必要做更多。请在 Google 控制台上重新创建您的客户端 ID,并在您的代码中将此行写为范围字符串。

String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";

https://github.com/AshishPsaini/GoogleAuth

于 2014-10-10T06:04:58.010 回答
2

当我更改包名称并忘记在 Google API 控制台中使用调试 SHA1 生成新客户端 ID 时,我收到此错误。

于 2013-08-18T23:18:39.383 回答
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:02:26.830 回答