有关更多背景信息,请参阅this one。
为了解决我之前的问题,我尝试按照Tim Bray提出的解决方案: Verifying Back-End Calls from Android Apps
我在Google API控制台中声明了两个项目,以获取两个客户端ID
不幸的是,我在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");
我做错了什么?
提前致谢
答案 0 :(得分:14)
几个小时后,我发现在您的范围字符串("audience:server:client_id:..."
)中,您必须使用Web应用程序的客户端ID,而不是Android应用程序。
Android应用的客户端ID未使用。它只是将您的Android应用程序的包名称与您的Web应用程序链接。
答案 1 :(得分:4)
两个客户端ID应该是同一个项目的一部分。
答案 2 :(得分:3)
没有必要做更多。 请在Google控制台上重新创建您的客户端ID,并在代码中将此行写为范围字符串。
String SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.profile";
答案 3 :(得分:2)
当我更改了我的软件包名称并忘记在Google API控制台中使用调试SHA1生成新的客户端ID时出现此错误。
答案 4 :(得分:0)
将GoogleApiCliente中添加的范围更改为Plus.SCOPE_PLUS_LOGIN。这项工作适合我。
googleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Plus.API)
.addScope(Plus.SCOPE_PLUS_LOGIN)
.build();