我得到一个GoogleAuthException: Unknown error,同时做一个GoogleAuthUtil.getToken。
就在我看到的异常之前
GLSUser: GLS error: INVALID_AUDIENCE <email> audience:server:client_id:xxx.apps.googleusercontent.com
我已将 SHA1 从我的发布密钥(包名称)设置为 google api 项目。(顺便说一句,它已成功用于 GCM。)
我得到一个GoogleAuthException: Unknown error,同时做一个GoogleAuthUtil.getToken。
就在我看到的异常之前
GLSUser: GLS error: INVALID_AUDIENCE <email> audience:server:client_id:xxx.apps.googleusercontent.com
我已将 SHA1 从我的发布密钥(包名称)设置为 google api 项目。(顺便说一句,它已成功用于 GCM。)
看起来应该可以;这是我的应用程序中的 scope-init 代码,它确实有效。
private static final String SCOPE = "audience:server:client_id:" + SERVER_CLIENT_ID;
所以我觉得客户端ID有问题。请记住
来自 #3 的客户端 ID 在 ...:client_id: 之后
为了记录我的问题,
我通过 AWS Mobile Hub 生成的示例应用程序从 Google 登录返回了相同的 INVALID_AUDIENCE 错误。有几件事要检查,
就像 Tim Bray 上面提到的那样,让您的客户端 ID 成为有效的 Web 客户端 ID(不是 Android)。但也有一个 android 客户端 ID,它具有正确的 SHA-1 指纹(在 debug.keystore 中找到,当您单击运行时,Android Studio 使用它来签署调试版本)和包名称。
注意:AndroidManifest.xml 中列出的包名称并不总是实际的包名称。要找到最终的包名称,请转到 build.gradle 文件并查看 applicationId 字段。配置 Android Client Id 时,请务必在 Developers Console 中输入正确的包名称。
发生在我的团队中,尽管它在我的设备上运行良好。原来是因为debug.keystore我们的 Eclipse 安装不同。
为了解决这个问题,我们将公司的debug.keystore文件复制到~/.android/
(这是 mac 上的目录,在 linux 和 windows 上是不同的)
此外,您还必须在 Google API 控制台中设置 oAuth 授权屏幕。
这就是我收到此错误的原因
通过删除在 .android 文件夹中找到的 debug.keystore 来解决此问题,然后再次运行新项目以生成新的 debug.keystore 文件。然后最终为 Google API 生成一个新的 SHA-1 签名证书。