首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLS错误: google云端点中的INVALID_AUDIENCE

GLS错误: google云端点中的INVALID_AUDIENCE
EN

Stack Overflow用户
提问于 2013-04-05 16:19:38
回答 5查看 7.1K关注 0票数 5

我试图让一个google端点开始工作,我创建了一个端点服务,并且能够通过Google开发器测试它的正常工作。然后,我生成了android客户机,并尝试调用我的端点服务。我在日志中看到了这个错误,

代码语言:javascript
复制
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代码,用于构建用于访问我的服务的凭证,

代码语言:javascript
复制
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控制台中创建了2个client_ids,a) WEB_CLIENT_ID =i为web应用程序创建了一个client_id,该应用程序具有重定向URI= None & JavaScript源起=无。( b) ANDROID_CLIENT_ID =为android应用程序创建了一个带有包名& sha1证书指纹的client_id。

2)然后在python中的端点服务中使用这些

代码语言:javascript
复制
@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])

完全日志

代码语言:javascript
复制
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)

已经见过类似的线程,但它们没有帮助,AUDIENCE error

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-06 03:31:05

呼!终于开始工作了。不知道是怎么回事。尝试这些方法,删除调试密钥存储文件并重新生成它。将sha1指纹复制到api控制台。然后按照这里的说明- http://android-developers.blogspot.com/2013/01/verifying-back-end-calls-from-android.html,以确保我至少可以在安卓设备上得到一个令牌。然后,我改为使用端点生成的客户端类。现在,我的应用程序能够通过端点服务与app引擎后端对话。

票数 4
EN

Stack Overflow用户

发布于 2013-12-09 05:55:00

我解决了这个问题,在google控制台中为该项目设置名称。

在API中的新UI API控制台中& auth ->同意屏幕中

票数 6
EN

Stack Overflow用户

发布于 2014-07-12 02:18:00

如果您使用的注释ANDROID_CLIENT_ID的@Api#clientIds包名与Android客户端的名称不同,您将得到这个错误。

例如

代码语言:javascript
复制
@Api(
    name = "yourFirstService",
    version = "v1",
    namespace = @ApiNamespace(ownerDomain = "myorg.org", ownerName = "My Org", packagePath = "firstservice" ),
    scopes = {Constant.API_EMAIL_SCOPE},
    clientIds = {Constants.ANDROID_CLIENT_ID, Constant.API_EXPLORER_CLIENT_ID},
    audiences = {Constants.ANDROID_AUDIENCE}
)
public class YourFirstAPI { 
  ...
}

感兴趣的是clientId属性。那里的ANDROID_CLIENT_ID需要

  1. 匹配clientId应用程序中的Cloud Console->APIS & Auth->Credentials->Client ID for Android
  2. 该clientId的包名必须与您作为客户端使用的安卓应用程序相同。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15838807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档