Android Google SignIn无法在debugging模式下工作:GoogleSignInResult为false

我一直在关注这个教程来让Google SignOn进入: https : //developers.google.com/identity/sign-in/android/start-integrating

当我用虚拟设备本地运行我的应用程序时,它工作正常,但是当我通过debugging将其部署到我的设备时,或者如果我生成签名的jar文件并手动复制它, GoogleSignInResult总是返回false并带有INTERNAL ERROR消息。

我经历了很长时间的努力才能够通过debugging将应用程序部署到我的设备时使用谷歌login。 任何帮助,高度赞赏!

我的问题的解决scheme:

在下载json文件的地方,你必须复制你可以使用java密钥工具生成的代码。 我完全错过了几次。

Solutions Collecting From Web of "Android Google SignIn无法在debugging模式下工作:GoogleSignInResult为false"

您可能缺less开发控制台注册。 这是非常普通的开发人员将有多个签名证书configuration:debugging密钥库,testing环境签名证书,生产签署证书。 签名证书SHA1 +软件包名称唯一标识一个Android客户端,需要在开发控制台中单独注册。

请参阅下面的博文,以了解有关OAuth客户端注册的更多信息:

http://android-developers.blogspot.com/2016/03/registering-oauth-clients-for-google.html

或者看到这个职位: 在开发阶段testing谷歌Androidlogin

我有同样的问题,这是由于

 apply plugin: 'com.google.gms.google-services' 

不在应用程序build.gradle的底部。

通过查看Gradle控制台找出它。 没有提出错误。

EDITED

答案是由此得出的,因为它也适用于这个问题

我在这里附上答案

问题是由于签名证书和SHA-1证书指纹。 将以下SHA-1证书添加到您的googleApi凭证中。 有2例

1.如果您正在debugging模式下运行,请添加以下生成的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.如果您已configurationSigning Config,请使用以下生成的SHA-1指纹

 "C:\Program Files\Java\jre1.8.0_101\bin\keytool" -list -v -keystore "[youKeyPath]\youKey.jks" 

我build议您在您的googleApi凭据中添加SHA-1指纹

原因可以是: – 您可能正在使用未签名的apk来testing您的应用程序。

转到生成 – >生成签名APK – >使用您的SHA1指纹在Google开发者控制台上创buildclientID的密钥进行签名

运行app-debug.apk及其完成!

除了上面的答案之外,我遇到了一个由于configuration与google-services.json文件不匹配而导致问题的案例:

clientId也可能是在GoogleSignInOptions Builder中专门分配的,如下所示:

  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,而不是configuration期间的硬编码值。

我希望能够帮助别人解决我试图用我的项目来诊断故障的麻烦。