Google Api和android Oauth INVALID_AUDIENCE错误

我在执行GoogleAuthException: Unknown error时收到了GoogleAuthException: Unknown error

就在我看到的例外之前

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

我已将SHA1从我的发布密钥(包名称)设置为google api项目。 (顺便说一下,成功用于GCM。)

看起来应该有用; 这是我的应用程序中的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:

为了记录我的问题,

我通过AWS Mobile Hub生成的示例应用从Google登录中获得了相同的INVALID_AUDIENCE错误。 要检查的一些事情,

就像Tim Bray上面提到的那样,让你的客户端ID成为有效的Web客户端ID(不是Android)。 但是还有一个android客户端ID,它具有正确的SHA-1指纹(在debug.keystore中find,Android Studio用来在单击Run时签署调试版本)和包名称。

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

虽然它在我的设备上工作正常但发生在我的团队中的一个。 原来是因为我们的eclipse安装中有一个不同的debug.keystore

为了解决这个问题,我们将公司的debug.keystore文件复制到了~/.android/ (这是mac上的dir,它在linux和windows上是不同的)

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

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

这就是我得到这个错误的原因