模拟器中的“此应用无权使用 Firebase 身份验证”

Posted

技术标签:

【中文标题】模拟器中的“此应用无权使用 Firebase 身份验证”【英文标题】:"This app is not authorized to use Firebase Authentication" in Emulator 【发布时间】:2018-01-24 05:16:30 【问题描述】:

当我尝试在模拟器上运行我的应用程序时出现此错误。

我做了什么:

    我正在使用 Firebase-UI 并运行 android O 我更新了 Play 商店。 我已将所有 SHA-1 代码添加到 Firebase 控制台,并且包名称匹配。

事实上,当我在真实设备上运行应用程序时,它运行良好并且我可以登录。

This app is not authorized to use Firebase Authentication. Please verify that the correct package name and SHA-1 are configured in the Firebase Console.
 com.google.firebase.auth.FirebaseAuthException: This app is not authorized to use Firebase Authentication. Please verifythat the correct package name and SHA-1 are configured in the Firebase Console. [ App validation failed. Is app running on a physical device? ]
 at com.google.android.gms.internal.jz.zzK(Unknown Source:239)
 at com.google.android.gms.internal.kp.zza(Unknown Source:2)
 at com.google.android.gms.internal.kq.run(Unknown Source:37)
 at android.os.Handler.handleCallback(Handler.java:789)
 at android.os.Handler.dispatchMessage(Handler.java:98)
 at android.os.Looper.loop(Looper.java:164)
 at android.app.ActivityThread.main(ActivityThread.java:6541)
 at java.lang.reflect.Method.invoke(Native Method)
 at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

【问题讨论】:

包名是否匹配? 是的。它适用于真实设备。请注意错误的最后一部分:[ 应用验证失败。应用程序是否在物理设备上运行? ] 我明白了。这可能是因为模拟器没有 google play 服务,这是 firebase 工作所必需的 @ZiyaERKOC 我正在使用安装了 Play 商店的图片 为什么会被否决? 【参考方案1】:

为了防止滥用,firebase 电话身份验证无法在模拟器中工作。

但如果你想要它用于测试目的,那么你应该添加 use some 在 Firebase 控制台中测试可以在模拟器中运行的电话号码。

转到您的 Firebase 控制台 -> 身份验证 -> 登录方法 -> 电话并检查“用于测试的电话号码(可选)”字段。

【讨论】:

通过此屏幕添加测试电话号码时,我收到此一般错误“添加测试电话号码时出错” @emaillenin 确保您添加的电话号码之前未记录/注册。如果该号码已存在于身份验证中,则您无法将其添加为测试帐户 非常感谢这个答案,它解决了我的问题【参考方案2】:

android studio中的sha1代:

从右侧面板中选择 android studio 中的 Gradle

选择您的应用

在任务中-> android-> 签名报告

双击签名报告。

您会在“Gradle 控制台”中找到 sha1 指纹

在 firebase 控制台中添加这个 sha1 指纹

【讨论】:

工作就像魅力!谢谢:) TY!我正在使用设备进行测试(不是模拟器)。这是我发现解决此错误的唯一方法:FirebaseUiException: There was an error while trying to get your package certificate hash. 如果在 gradle 中找不到任务:***.com/a/67493124/1540350【参考方案3】:

好的,所以这是一个记录在案的错误。 https://github.com/firebase/FirebaseUI-Android/issues/790 和 https://github.com/firebase/FirebaseUI-Android/issues/868

为了防止滥用,您不能在模拟器上使用电话验证。

文档在这里: https://firebase.google.com/docs/auth/android/phone-auth#before-you-begin

另外,请注意,电话号码登录需要物理设备,不能在模拟器上运行。

更新 看看 Prasanna Anbu 的回答。

【讨论】:

有没有办法在模拟器上运行它? /:) 不。但您仍然可以尝试分享。 您可以使用模拟器测试电话号码。 这节省了我很多时间。我尝试了提到的所有其他解决方案,但没有任何结果。我不知道为什么其他人错过了这个初步步骤,但这一点对我帮助很大。谢谢兄弟。【参考方案4】:

花了一整天的时间找出问题所在。我找到了罪魁祸首!我们已选择加入 Google Play 的 App Signing。 我们需要从 App Signing 本身注册 SHA-1。它可以在 Google Play 控制台内部的设置 > 应用程序完整性下找到。 它将有两种类型的证书:

1.上传证书:这是上传的密钥库中证书的信息。这需要与本地应用签名的密钥库相同,因为 Google Play 将验证上传的应用与此签名证书匹配。

2.应用签名证书:上传应用后,谷歌会将上传证书替换为该证书。这是一个新证书,将用于在 Play 商店中发布的应用程序。

有了这些信息,我才意识到我们没有为已发布的应用程序使用的应用程序签名证书注册 SHA-1。因此,我在应用程序的 Firebase > 项目设置中添加了 SHA-1(也是 SHA-256,以防万一)指纹(添加指纹后不要忘记更新最新的配置文件)。

因此,添加您的 SHA 指纹后,您的 Firebase SHA 证书指纹将如下所示:

现在保存更改然后返回您的应用并再次测试它现在可以工作了!。

【讨论】:

非常感谢! 在我的例子中,我有我的调试 SHA-1 指纹,但是直到我添加了我的 SHA-256 指纹之后它才起作用。我建议添加发布和调试密钥库的 SHA-1 和 SHA-256 以确保安全。【参考方案5】:

您的 SHA1 密钥未在您的 Firebase 控制台中注册。只需生成 SHA 密钥,如下图所示,从 Android Studio 终端复制 SHA 密钥并将其添加到 Firebase 控制台项目设置中:

还要确保您使用的是发布密钥库来生成此密钥

在此之后生成您的 SHA1 指纹,否则您的用户将在电话身份验证时面临 SHA1 错误。

希望对某人有所帮助。

【讨论】:

请阅读整个问题。我已经说过我已经添加了 SHA-1 指纹,并且我已经添加了这个问题的批准答案。 构建类型后 -> 签署配置 -> 选择配置 -> 确定。它什么也没做。你能告诉我在哪里可以看到释放 SHA1 密钥吗? 在Android Studio的终端中【参考方案6】:

您需要在 firebase 控制台中配置 SHA-1

您可以使用 Android Studio 工具轻松完成。

    在 Android Studio 中打开Tools -> Firebase。 点击任一功能,例如AuthenticationRealtimeDatabase。 点击Connect to Firebase 并执行所需操作。

手动添加。看看这个..

How to add SHA-1 to android application

【讨论】:

我已经说过我已经添加了 SHA-1 证书,Auth 过程在真实设备上完美运行。 @RazvanCristianLung 我在真实设备(android)中遇到了这个问题,你是怎么解决的? 您的设备是否运行自定义 ROM?【参考方案7】:

对我来说,问题只是我正在使用模拟器输入未保存为测试电话号码的电话(Firebase->身份验证->登录方法->电话->并在此处添加测试电话号码

【讨论】:

是的,那是我的问题!【参考方案8】:

生成 SHA-1 证书 喜欢这个链接SHA-1 fingerprint of keystore certificate

打开您的 Firebase 控制台并在此处添加此 SHA-1 密钥后。

【讨论】:

我已经说过我已经添加了 SHA-1 证书,Auth 过程在真实设备上完美运行。【参考方案9】:

我在 react-native 构建中也遇到了类似的问题,如下图所示。我按照下面提到的步骤解决了这个问题。

根据@adirzoari打开你的react native项目进入android studio然后:

    运行您的项目。 点击 Gradle 菜单。 展开 Gradle 任务树。 双击android -> signingReport 你会看到结果

对于 Android Studio 2.2 - 结果将在运行控制台下可用,但使用突出显示的切换按钮。

【讨论】:

【参考方案10】:

enter image description here如何修复请确认在 firebase 控制台中配置了正确的包名和 sha1:

    确保在您的应用中的 firebase 中添加 SHA 单击设置 -> 项目设置 -> 常规 -> 添加指纹(您的应用中的 SHA 1)-> 保存

    然后点击认证->登录方式->电话->电话号码测试(可选)->保存

提供您要测试的电话号码,例如:+1 650-555-3434 提供该特定号码的 6 位验证码,例如:654321 enter image description here
    Whoolaaaaa 它对我的工作“代码已发送”在模拟器中 enter image description here

【讨论】:

【参考方案11】:

添加 SHA-1,但不提及 SHA-1。就像你有 SHA-1 一样:

SHA1:6G:49:58:57:A2:5C:2R:95:7D:32:19:4A:69:05:14:F2:31:0D:72:0A

仅将此添加到 firebase 项目设置

6G:49:58:57:A2:5C:2R:95:7D:32:19:4A:69:05:14:F2:31:0D:72:0A

更多信息

您可以从 gradle 命令生成 SHA 密钥

./gradlew 签名报告

【讨论】:

【参考方案12】:

转到您的 Firebase 控制台 -> 身份验证 -> 登录方法 -> 电话。将带有验证码的随机数添加到enter image description here“用于测试的电话号码(可选)”字段中。

【讨论】:

以上是关于模拟器中的“此应用无权使用 Firebase 身份验证”的主要内容,如果未能解决你的问题,请参考以下文章

“此应用无权使用 Firebase 身份验证”

无法将 Firebase 连接到 Android 应用 |此应用无权使用 Firebase 身份验证

此应用无权使用 Firebase 身份验证 - Reg

此应用无权使用 Firebase 身份验证。请确认在 Firebase 中配置了正确的包名称和 SHA-1

此应用无权使用 Firebase 身份验证。请确认在 Firebase 中配置了正确的包名称和 SHA-1

例外 !!消息:此应用未授权使用 Firebase 身份验证