2013-02-22 50 views
15

我得到GoogleAuthException: Unknown error,同时做GoogleAuthUtil.getTokenGoogle Api和android Oauth INVALID_AUDIENCE错误

就异常之前我看到

GLSUser: GLS error: INVALID_AUDIENCE <email> audience:server:client_id:xxx.apps.googleusercontent.com 

我已经设置从我的释放键,包名的SHA1,对谷歌的API项目。 (顺便说一下,它正在成功应用于GCM。)

回答

16

看起来像应该工作;这里是我的应用程序的scope-in​​it代码,它可以工作。

private static final String SCOPE = "audience:server:client_id:" + SERVER_CLIENT_ID; 

所以它闻起来像我的客户端ID有问题。请记住,

  1. 你必须有两个客户端ID
  2. 一个项目是一个将Android应用,与SHA &包&等
  3. 另一种是在服务器端,你是打算送令牌关闭以

这是一个从#3的客户端的ID去后...:CLIENT_ID:

+0

谢谢,就是这样。 – Alok 2013-02-23 03:27:14

+3

@Alok ....我遇到了同样的问题。我在端点api中的受众中使用web client_id,也在android受众范围中使用。仍然看到相同的认证错误。你是如何生成web client_id的?我去了Google APIs控制台,为redirect uri&javascript origin的空白Web应用程序生成了一个Client Id。那是对的吗? – plspl 2013-04-05 23:49:02

+0

这样做的另一个常见原因是注册调试证书散列并使用发布进行测试(反之亦然)。 – 2013-05-19 15:45:48

0

正巧一个在我的团队虽然它在我的设备上运行正常。 原来是因为我们的eclipse安装上有一个不同的debug.keystore

为了解决这个问题,我们已经复制了公司的debug.keystore文件~/.android/ (这是在Mac上的目录,它是在Linux和Windows不同)

0

通过删除您发现您的debug.keystore解决这个问题。 android文件夹,然后再次运行新项目以生成新的debug.keystore文件。 然后最后为Google API生成一个新的SHA-1签名证书。

0

此外,您还必须在Google API控制台中设置oAuth授权屏幕。

这就是为什么我得到这个错误

0

在记录我的问题的兴趣,

我有同样的INVALID_AUDIENCE错误从谷歌签入通过AWS移动枢纽产生的示例应用程序回来。有几件事要检查,

像蒂姆布雷注意上面,使您的客户端ID为有效的网络客户端ID(不是Android)。但也有一个Android客户端ID,它具有正确的SHA-1指纹(在您单击Run时用于签署调试版本的debug.keystore中找到)和包名称。

注意:AndroidManifest.xml中列出的软件包名称并不总是实际的软件包名称。要找到最终的软件包名称,请转到build.gradle文件并查看applicationId字段。确保在配置Android客户端ID时在Developers Console中输入正确的软件包名称。