com.google.android.gms.auth.GoogleAuthException:getToken(未知来源)异常
Posted
技术标签:
【中文标题】com.google.android.gms.auth.GoogleAuthException:getToken(未知来源)异常【英文标题】:com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception 【发布时间】:2014-02-11 05:35:26 【问题描述】:在我的 android 应用程序中,我正在尝试获取 google 令牌以在我的 google 应用引擎后端服务器上进行验证。但我总是得到这个例外:
com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception
我的代码:
private Account mAccount = AccountManager.get(this).getAccountsByType(GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE)[0];
private static final String SCOPE = "audience:server:client_id:" +Constants.WED_CLIENT_ID;
String token = GoogleAuthUtil.getToken(LoginActivity.this, mAccount.name, SCOPE);
我已经尝试过 *** 中提出的所有解决方案。
【问题讨论】:
【参考方案1】:几个小时后,我发现在您的范围字符串 ("audience:server:client_id:..."
) 中,您必须使用 Web 应用程序的客户端 ID,而不是 android 的。
Android 应用的客户端 ID 未使用。它只是在这里将您的 android 应用程序的包名称与您的 Web 应用程序链接起来。
【讨论】:
但是我使用的是WEB CLIENT ID..我没有使用Android ID..问题是我已经回答的其他问题..谢谢!! 嗨!同样的问题,虽然还没有得到解决方案。在我的范围内,我使用的是在 Google Developer Console 中创建的 Web 客户端中的客户端 ID,但它不起作用:( 成功了!从使用 Android 应用客户端 ID 更改为“Web 客户端(由 Google 服务自动创建)”并且它有效!【参考方案2】:经过 2 天的研究,我发现当您在 Google Cloud Console 中注册您的 android 应用程序 -> 您的项目 -> API 和身份验证时,它会要求您提供指纹以生成 ClientID 并且不知何故我的指纹是错误的(我不小心在这个 cmd keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1
之前添加了~$
,因此它给了我错误的指纹并且是以下问题的根本原因:
com.google.android.gms.auth.GoogleAuthException: getToken(Unknown Source) exception.
【讨论】:
你能帮我解决这个错误吗***.com/questions/21445265/… @SmitPatel 我不明白..你想要指纹代码?? 谢谢,但我已经解决了问题,我将把代码推送到 GitHub 上【参考方案3】:在互联网上阅读了几篇文章后,我生成了我的密钥库的 SHA1 指纹值
keytool -exportcert -alias android_keystore -keystore android_keystore -list -v | openssl sha1
因此我得到了那个错误。如果您在 Google 开发者控制台中看到凭据屏幕,则表明您需要使用
keytool -exportcert -alias android_keystore -keystore android_keystore -list -v
即不要将输出通过管道传输到 openssl sha1。不确定有什么区别,但两个命令给出的值不同。
您将获得多个指纹,如 MD5、SHA1、SHA256 等。使用 SHA1 值。
【讨论】:
以上是关于com.google.android.gms.auth.GoogleAuthException:getToken(未知来源)异常的主要内容,如果未能解决你的问题,请参考以下文章