GoogleCalendarAPI在API控制台上取消注册

时间:2016-12-30 11:25:15

标签: android google-calendar-api

我在整合Google日历时遇到以下错误。

请检查我的以下代码。

提前致谢。

com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
                                                                        at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:286)
                                                                        at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859)
                                                                        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
                                                                        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
                                                                        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
                                                                        at com.taskdemocal.AsyncLoadTasks.doInBackground(AsyncLoadTasks.java:38)
                                                                        at com.taskdemocal.CommonAsyncTask.doInBackground(CommonAsyncTask.java:55)
                                                                        at com.taskdemocal.CommonAsyncTask.doInBackground(CommonAsyncTask.java:33)
                                                                        at android.os.AsyncTask$2.call(AsyncTask.java:292)
                                                                        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                                        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
                                                                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
                                                                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
                                                                        at java.lang.Thread.run(Thread.java:818)
                                                                     Caused by: com.google.android.gms.auth.GoogleAuthException: UNREGISTERED_ON_API_CONSOLE

1 个答案:

答案 0 :(得分:3)

该错误很可能是由于Android应用程序与Cloud Endpoints API之间未发生授权所致。

由于我无法完全访问您的实际Endpoint API注释和Android代码,因此我建议您仔细查看以下几点:

确保您已使用clientIds和受众正确注释了Cloud Endpoints API。 Android Audience值与Web Client Id的值相同。 确保已部署更新的API并重新生成Endpoints API源以包含在Android应用程序中。 最后,在您的Androids源代码中,您必须使用GoogleAccountCredential.usingAudience(...)构建GoogleAccountCredential的实例,然后在调用端点API时使用此凭据对象。对于例如端点构建器采用H​​TTP传输,GSON工厂和凭据。不要将最后一个参数(即Credential)留空。

我也遇到了类似的GoogleAuthIOException异常:

com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:286)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:410)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:343)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
at com.example.MainActivity$ListPartiesTask.doInBackground(MainActivity.java:188)
at com.example.MainActivity$ListPartiesTask.doInBackground(MainActivity.java:178)
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)
Caused by: com.google.android.gms.auth.GoogleAuthException: Unknown
at com.google.android.gms.auth.GoogleAuthUtil.zzb(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.zza(Unknown Source)
at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
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.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:279)
... 12 more

原来我需要使用应用程序调试版本的sha1指纹创建一个客户端ID(我已经为该应用程序的签名版本创建了一个,但是如果你还没有做到这一点,那么你就是#39 ;我也需要这样做。)

您可以使用以下命令获取指纹(在Mac上,debug.keystore的地址在其他系统上可能会有所不同):

 keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

如果您需要获取释放密钥的指纹,可以执行以下操作:

keytool -list -v -keystore /PATH/TO/YOUR/release-key.jks -alias RELEASE_KEY_ALIAS