GoogleAuthException:Google Cloud Endpoints未知

时间:2014-01-25 16:49:42

标签: android google-app-engine google-cloud-endpoints

我已将API添加到现有的GAE应用程序中。 API旨在通过具有Google Cloud Endpoints和OAuth2身份验证的Android应用程序使用。

当我在没有身份验证的情况下访问API时,一切正常,但是通过身份验证会发生以下错误。 通过启用OAuth2的API Explorer进行测试时,一切工作正常。

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 com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.getToken(GoogleAccountCredential.java:255)
at com.appspot.p2ptransfers.MainActivity$2.doInBackground(MainActivity.java:248)
at com.appspot.p2ptransfers.MainActivity$2.doInBackground(MainActivity.java:234)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)

可以使用

重现错误
try {
  _Credential = GoogleAccountCredential.usingAudience(MainActivity.this,"server:client_id:" + Utilities.WEB_CLIENT_ID);
  _Credential.setSelectedAccountName("valid_email@gmail.com");
  _Credential.getToken();
} 
catch (Exception e) {
  String s = Log.getStackTraceString(e);
  Log.e("Endpoints", s);
}

API定义为

WEB_CLIENT_ID = '<WEB_CLIENT_ID>'
ANDROID_CLIENT_ID = '<ANDROID_CLIENT_ID>'
ANDROID_AUDIENCE = WEB_CLIENT_ID

@endpoints.api(name='<api name>', version='v1',
           allowed_client_ids=[WEB_CLIENT_ID, ANDROID_CLIENT_ID, endpoints.API_EXPLORER_CLIENT_ID],
           audiences=[WEB_CLIENT_ID],
           scopes=[endpoints.EMAIL_SCOPE])

通过API控制台生成的客户端ID。

有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

我在玩Google OAuth2 Playground时发现了问题。 我收到的错误是

Error: invalid_client
The OAuth client was deleted.

然后我记得一个月前我错误地删除了这个项目,但后来我在几分钟后就删除了它。

当我创建一个新项目并生成新的客户端ID时,一切都开始工作了。