通过 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 帐户登录的?
Google Play 游戏、Firebase 和新的 Google 登录