通过 Firebase 登录 Google ->

Posted

技术标签:

【中文标题】通过 Firebase 登录 Google ->【英文标题】:Google Sign In via firebase -> 【发布时间】:2017-11-20 17:56:05 【问题描述】:

我按照本教程将 Goggle Login 添加到我的应用程序: https://firebase.google.com/docs/auth/android/google-signin?authuser=0

所以代码是这样的: https://github.com/firebase/quickstart-android/blob/master/auth/app/src/main/java/com/google/firebase/quickstart/auth/GoogleSignInActivity.java

但是登录时我得到了这个...

错误:

Google sign in failed
com.google.android.gms.common.api.ApiException: 10: at 
com.google.android.gms.common.internal.zzb.zzz(Unknown Source)at
com.google.android.gms.auth.api.signin.GoogleSignIn.
         getSignedInAccountFromIntent(Unknown Source)

我认为我已经正确设置了 firebase 和 Google Console。此外,用于添加 firebase 的 Android Studio Assistent 表示依赖项是正确的。

我忽略了什么?

【问题讨论】:

您是否按照setup instructions 中的说明设置了应用的 SHA-1 指纹并启用了 Google 登录? 是的,我做到了。我使用了开发者控制台之外的 web 客户端 ID。 此行出错:Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); 我认为堆栈跟踪中的值“10”是异常状态码。如果是这样,它是DEVELOPER_ERROR。相关的 SO 问题,例如 this one,表明您使用的 SHA-1 指纹存在问题。 看起来他没有将 SHA-1 或 SHA-256 保存在 firebase 菜单中……过了一段时间,那里不再显示了。有隐藏的保存按钮吗? :D 【参考方案1】:

我解决了这个问题,经过一番努力,我发现问题出在错误的 SHA1 密钥上。

您必须在开发阶段生成一个 sha1 调试密钥。启动您的应用后,您应该使用您的发布密钥。

要生成调试密钥,请打开 keytool.exe 和:keytool -exportcert -list -v -ali 作为 androiddebugkey -keystore %USERPROFILE%.android\debug.keystore 密码:安卓

完成此操作,复制生成的 sha1 密钥,在 firebase 中转到项目配置,添加指纹。完成此操作,下载项目的 json 文件并运行。

您必须使用 sha1 释放键重复此过程。

【讨论】:

【参考方案2】:

我想通了。有点垃圾。我在 Google 控制台中启动了一个项目,后来又在 Firebase 中启动了一个项目。然后我尝试连接它们以使用 Webclient-Id ... 毕竟它们没有合并,所以 Firebase 没有找到这个 Web-ID。

-> 我刚刚创建了一个新的 Firebase Projekt,并在其中创建了一个新的 Google-Console Projekt,用于生成 Web-ID。在我的应用程序中实施新的 Web-ID 后,它运行良好!

【讨论】:

以上是关于通过 Firebase 登录 Google ->的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?

Firebase 使用 Google 帐户覆盖登录

Google Play 游戏、Firebase 和新的 Google 登录

将登录屏幕切换到家庭 firebase 和 google

如何将 Google Play 游戏登录与 Firebase 身份验证结合使用

Firebase Google 登录 (iOS) - 从未调用过 GIDSignInUIDelegate 方法