Android Google SignIn 无法在调试模式下工作:GoogleSignInResult 为 false
Posted
技术标签:
【中文标题】Android Google SignIn 无法在调试模式下工作:GoogleSignInResult 为 false【英文标题】:Android Google SignIn not working in debug mode: GoogleSignInResult is false 【发布时间】:2016-03-11 02:14:09 【问题描述】:我一直在学习本教程以开始使用 Google SignOn: https://developers.google.com/identity/sign-in/android/start-integrating
当我使用虚拟设备在本地运行我的应用程序时,它工作正常,但是当我通过调试将其部署到我的设备时,或者如果我生成签名的 jar 文件并将其手动复制 GoogleSignInResult
总是返回 false
和 @987654325 @消息。
在通过调试将应用程序部署到我的设备时,我一直在努力使用谷歌登录。非常感谢任何帮助!
我的问题的解决方案:
在您下载 json 文件的地方,您必须复制可以使用 java 密钥工具生成的代码。我连续几次完全错过了。
【问题讨论】:
面临同样的问题。即使使用虚拟设备也会出现同样的错误。我以为我的google-services.json
文件可能有问题,但事实并非如此。此外,这曾经可以工作一段时间,我只是注意到它正在破坏。也无法弄清楚它改变的地方......
我也有类似的问题。相同的代码在我的 Android 4.4.4 的 Nexus 7 平板电脑上运行,但我在 Nexus 6 的 Android 6.0 上得到 INTERNAL_ERROR
我的问题是应用没有用我的证书签名:***.com/questions/34652682/…
@Markus 我有类似的问题,但在发布模式下。什么 json 文件?client_id.json 或 google-services.json?我可以把代码放在哪里?
@Markus 我也有类似的问题。你能详细说明你是如何解决这个问题的吗? “复制过去可以使用 java 密钥工具生成的代码”是什么意思??
【参考方案1】:
您可能缺少开发控制台注册。开发人员通常会有多个签名证书配置:调试密钥存储、测试环境签名证书、生产签名证书。签名证书 SHA1 + 包名唯一标识一个 Android 客户端,需要在开发控制台中单独注册。
请参阅下面的博文以了解有关 OAuth 客户端注册的更多信息:
http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html
或者看这个帖子: Test google signin on Android in development phase
【讨论】:
正如我在评论中提到的:好吧,这是我的错。在您下载 json 文件的位置,您必须复制可以使用 java 密钥工具生成的代码。我连续几次完全错过了..所以也许这会有所帮助。但是你的回答可能会帮助其他人加入这个帖子,所以谢谢你!【参考方案2】:我遇到了同样的问题,这是由于
apply plugin: 'com.google.gms.google-services'
不在应用 build.gradle 的底部。
通过查看 Gradle 控制台弄清楚了。未引发任何错误。
【讨论】:
【参考方案3】:根据this,您需要 3 个 SHA1 密钥在 Firebase 项目设置中
在大多数情况下,问题出在第三把钥匙。
调试键
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
释放键
keytool -list -v -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH
Google Play 应用签名密钥
https://play.google.com/apps/publish/
新游戏发布控制台的更新
在您应用的Release menu
> App integrity
> App signing certificate
在旧版游戏发布控制台中
在您应用的Release management
> App signing
> App signing certificate
这是 SHA1 密钥
您需要三个密钥才能确定一个 Google 登录。
确保它始终是 SHA1,而不是 SHA256
【讨论】:
【参考方案4】:可以的原因是: - 您可能正在使用未签名的 apk 来测试您的应用。
转到 Build->Generate Signed APK -> 使用您用于获取 SHA1 指纹以在 Google 开发者控制台上生成 clientID 的密钥对其进行签名
运行 app-debug.apk 并完成!
【讨论】:
感谢您的意见。它可能会帮助其他一些人。我用我的问题的解决方案更新了我的答案。我已经把它作为评论,但现在它的可读性更好:) hai,我有类似的问题,但在发布版本上..我不想尝试你的答案也许它可以帮助..但我不太明白你的答案,你说sign it with the key
这是你的意思是SHA1指纹?当我生成签名APK时我把它放在哪里?谢谢之前【参考方案5】:
已编辑
答案来自this,因为它也适用于这个问题
我在这里附上答案
问题是由签名证书和 SHA-1 证书指纹引起的。将以下 SHA-1 证书添加到您的 googleApi 凭据中。有2个案例
1.如果您在调试模式下运行,请添加以下生成的 SHA-1 指纹
"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "%USERPROFILE%\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
2.如果您已经配置了Signing Config,则使用以下生成的SHA-1指纹
"C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "[youKeyPath]\youKey.jks"
我建议您在 googleApi 凭据中添加 SHA-1 指纹
【讨论】:
【参考方案6】:除了上面的答案,我还遇到了一个问题是由于配置与 google-services.json 文件不匹配引起的:
也可能是在 GoogleSignInOptions Builder 中专门分配了 clientId,如下所示:
String serverClientId = "xxxxx-yyyy.apps.googleusercontent.com";
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.requestIdToken(serverClientId)
.build();
如果是这种情况,可以删除对 serverClientId 和 requestIdToken 调用的引用,如下所示:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build();
这将依赖于 google-services.json,而不是配置期间的硬编码值。
我希望它可以为其他人省去我试图诊断项目故障的麻烦。
【讨论】:
以上是关于Android Google SignIn 无法在调试模式下工作:GoogleSignInResult 为 false的主要内容,如果未能解决你的问题,请参考以下文章
Google Signin 无法点击,并且仅在移动设备上登录时冻结
无法解析 GoogleSignIn 和 GoogleSignInClient
admin_signin活动无法转换为android.app.activity
像 Google SignIn Button 一样设置 Facebook SignIn 按钮高度
Google+ 登录按钮 [class='g-signin']
@react-native-google-signin/google-signin/src/GoogleSignin.js 抛出异常 null is not an object(评估'RNGoogle