【发布时间】:2013-04-05 16:19:38
【问题描述】:
我正在尝试让 google 端点工作。我创建了一个端点服务,并能够通过 Google API exploer 测试它的工作正常。然后我生成了 android 客户端并尝试调用我的端点服务。我在日志中看到了这个错误,
04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE myemail@gmail.com audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com
这是我的 android java 代码,用于构建凭据,即用于访问我的服务,
AUDIENCE = "server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com";
credential = GoogleAccountCredential.usingAudience(this, AUDIENCE);
setAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
client_id 似乎有些不匹配。这是我所做的,
1) 在一个 API 项目的 Google API 控制台中创建了 2 个 client_id, a) WEB_CLIENT_ID = 我为 Web 应用程序创建了一个 client_id,其中 Redirect URIs = None & JavaScript origins = None。 b) ANDROID_CLIENT_ID = 使用包名和 sha1 证书指纹为 Android 应用创建了 client_id。
2)然后在我的python端点服务中使用这些,
@endpoints.api(name='devices',
version='v1',
description='Service to register devices',
allowed_client_ids=[ANDROID_CLIENT_ID,WEB_CLIENT_ID,endpoints.API_EXPLORER_CLIENT_ID],
audiences = [WEB_CLIENT_ID])
完整日志
04-05 08:48:20.397: D/overlay(159): Set pipe=RGB1 dpy=0; Set pipe=VG0 dpy=0;
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: INVALID_AUDIENCE status: null
04-05 08:48:20.547: I/GLSUser(13505): GLS error: INVALID_AUDIENCE myemail@gmail.com audience:server:client_id:334082396285-hfn3t2g5pg0gv8fshf22kaadq9fs23e2.apps.googleusercontent.com
04-05 08:48:20.547: W/GLSUser(13505): Status from wire: Unknown status: UNKNOWN
04-05 08:48:20.547: W/System.err(31908): com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAuthIOException
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential$RequestHandler.intercept(GoogleAccountCredential.java:224)
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:836)
04-05 08:48:20.547: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:412)
04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:345)
04-05 08:48:20.557: W/System.err(31908): at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:463)
04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:174)
04-05 08:48:20.557: W/System.err(31908): at com.package.appname.SetupActivity$SendResultToServerTask.doInBackground(SetupActivity.java:1)
04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-05 08:48:20.557: W/System.err(31908): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-05 08:48:20.557: W/System.err(31908): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-05 08:48:20.557: W/System.err(31908): at java.lang.Thread.run(Thread.java:856)
04-05 08:48:20.557: W/System.err(31908): Caused by: com.google.android.gms.auth.GoogleAuthException: Unknown
04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
04-05 08:48:20.557: W/System.err(31908): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
已经看过类似的帖子,但没有帮助, Google Api and android Oauth INVALID_AUDIENCE error
【问题讨论】:
-
在我的 API 控制台中重新生成了一个新的 Web 应用程序 client_id。在应用引擎后端的受众以及 android 受众范围内使用它。还是没有运气。
-
重命名了我的安卓应用包并生成了一个新的安卓客户端ID。仍然得到同样的错误。
-
为了消除明显的错误来源,您是否在物理 Android 设备(而不是模拟器)上在生产和测试中运行 Endpoint?
-
是的,我已经使用 url (appid.appspot.com) 将我的端点应用程序部署到 GAE 并在我的 Nexus 4 上进行了测试。
标签: android python google-app-engine google-oauth google-cloud-endpoints