Firebase 电话身份验证无法在 Android 真实设备上运行

问题描述 投票:0回答:12

我一直在尝试使用 Firebase 身份验证来实现电话身份验证。它正在与 Android 模拟器配合使用。我在模拟器中使用了测试数和真实数。两者都有效。但只有测试号码可以在真实设备上使用,并为其他号码抛出此异常

Error is:[firebase_auth/missing-client-identifier] This request is missing a valid app identifier, 
 meaning that neither SafetyNet checks nor reCAPTCHA checks succeeded. 
 Please try again, or check the logcat for more details.

我也在 firebase 中设置了 SHA 密钥。

firebase flutter firebase-authentication
12个回答
36
投票

我猜您尚未启用设备检查 API。您只需在云平台启用Device Check API即可。

我认为经过一些更新后,他们做出了这样的更改:对于安全网络,您需要 SH1 身份验证以及启用设备检查 API。

您可以按照此处所述的步骤进行操作。

启用设备检查 API 后。重新启动您的应用程序。它应该像魅力一样发挥作用。

请告诉我您是否需要采取进一步措施。


19
投票

SafetyNet是新开发的Android功能。但在没有对应用程序进行任何更改的情况下解决了问题。

以下步骤帮助我解决了。

发布版本

  1. Google 在您上传时对 Appbundle 进行签名。因此,找到并复制由谷歌签名的应用程序的 SHA1 密钥。 Google Play 管理中心 - 应用签名密钥

enter image description here

  1. 导航到 Firebase 控制台中的项目 -> 项目设置,然后单击 添加指纹 添加 SHA1 密钥。 enter image description here

调试版

  1. 使用终端使用以下命令导航到项目的 android 目录。

cd 安卓

  1. 生成应用程序签名报告并复制 SHA1 密钥

gradlew 签名报告

在 Mac 上:

./gradlew 签名报告

enter image description here

  1. 在 firebase 应用程序中添加 SHA1 密钥。

6
投票

Android 添加了 SafetyNet 您可以在此处阅读更多内容。但您需要做的是

1.启用Android设备验证API这里。和

2. 如果您尚未指定应用的 SHA-256 指纹,请从 Firebase 控制台的“设置”页面执行此操作。欲了解更多信息,请阅读详细信息。


4
投票

我通过从 firebase 中删除旧的 android studio sha-1 和 sha-256 密钥并从最新的 android studio 添加一个新密钥解决了我的问题。


3
投票

我已经修复了这个错误。 就我而言,我在单个 firebase 项目中添加了两个具有相同 SHA-1 的 Android 项目。 有一次我从 firebase 项目中删除了一个项目。 现在它对我有用。


1
投票

我经过多次搜索后发现了这个,应该对你或任何在这里绊倒的人有用:

将此行放入依赖项下的 app/build.gradle 中

实现“androidx.browser:浏览器:1.2.0”

这是因为它做了reCAPTCHA验证并打开了浏览器。


1
投票

Firebase 身份验证有两种方法可以实现此目的:

SafetyNet:如果用户的设备安装了 Google Play 服务, Firebase 身份验证可以验证设备是否合法 Android SafetyNet,电话号码登录即可进行。

reCAPTCHA验证:在SafetyNet无法使用的情况下,例如当用户没有Google Play服务时 支持,或者在模拟器上测试您的应用程序时。

所以你的解决方案是两个之一

  • 在真实设备上重新测试

  • 向您的应用添加 reCAPTCHA 验证功能,以便您可以 继续使用您的模拟器。


0
投票

这对我有用:- 如果您的应用程序已在 Play 商店上发布,请从 Google Play 控制台复制应用程序签名密钥证书(发布 > 设置 > 应用程序完整性页面)。将您的签名密钥插入 Firebase 控制台(项目设置页面)。

点击此链接 - https://developers.google.com/android/guides/client-auth


0
投票

我从电话号码中删除了我的电话号码,以便在 firebase 上进行测试,并且在真实设备而不是模拟器上工作时,它对我有用。


0
投票

实际上,我的两个应用程序具有相同的 OAuth2 客户端 ID,这导致 Google Firebase 身份验证发送 SMS OTP 时出现问题。 我如何解决这个问题提到:

  1. 在 Google Cloud Platform 仪表板中打开我的项目。
  2. 移至凭证部分
  3. OAuth 2.0 Client IDs下找到与您自己的项目具有相同密钥冲突的项目。点击打开它。
  4. 删除ID
  5. 重新启动您的项目即可完成!

您可以在这里找到官方帮助。

如果您对此主题有任何疑问,请随时联系。 谢谢


0
投票

我将 android studio 的调试密钥库的调试 SHA-1 和 SHA-256 添加到了 firebase 项目(常规设置),如下所述:https://developer.android.com/studio/publish/app-signing #调试模式


0
投票

对于 Android,Firebase 要求您将应用的 SHA-1 和 SHA-256 密钥添加到 Firebase 控制台。您可以通过在项目目录中运行以下命令来获取这些密钥:

1> cd 安卓 2> ./gradlew 签名报告

© www.soinside.com 2019 - 2024. All rights reserved.