我已将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。
有没有人有任何想法?
答案 0 :(得分:0)
我在玩Google OAuth2 Playground时发现了问题。 我收到的错误是
Error: invalid_client
The OAuth client was deleted.
然后我记得一个月前我错误地删除了这个项目,但后来我在几分钟后就删除了它。
当我创建一个新项目并生成新的客户端ID时,一切都开始工作了。