Android 上的 Flutter/Firebase verifyPhoneNumber() 总是调用 recapcha“验证您不是机器人”

Zel*_*elf 6 dart firebase firebase-authentication flutter flutter-dependencies

Android 需要进行什么配置以及在哪里进行配置才能停止将 recapcha 作为 Firebase verifyPhoneNumber() 流程的一部分?

请参阅屏幕录制。

在浏览器中打开机器人验证之前,会记录以下内容:“SafetyNet 证明基本完整性失败”。

我已经验证了以下内容:

  1. 为我的项目启用 Android 设备验证。然而,这没有任何作用。
  2. 正如许多 SO 帖子所建议的那样,删除了 Firebase Analytics 和其他依赖项,但仍然无济于事。
  3. 我已经添加了 SHA1,但也将 SHA256 添加到了 Firebase 项目设置中。
  4. 为了排除我的应用程序中的某种依赖性问题,我创建了一个全新的基本 Flutter 应用程序,除了 Firebase Core 和 Auth 以及 Flutter 中 Firebase 所需的典型设置之外,它具有零依赖性。同样的事情发生(屏幕录制)。
  5. 更新 - 此处可能的答案: 文档状态:“reCAPTCHA 验证:如果无法使用 SafetyNet,例如当用户没有 Google Play 服务支持时,或者在模拟器上测试您的应用程序时,Firebase 身份验证将使用 reCAPTCHA验证以完成电话登录流程。” 我想它是根据文档工作的,但是 SO 上有很多帖子,用户表示即使在模拟器中他们也能够克服这个问题。

此应用程序未发布到 Google Play,只是在模拟器和物理 Android 设备上进行测试。

Firebase 中发生了一些变化,但我找不到任何说明如何在 Android 上克服 Firebase verifyPhoneNumber() 验证码的文档。

验证码返回后,codeSent返回,其他verifyPhoneNumber()参数工作正常。

await FirebaseAuth.instance.verifyPhoneNumber(
  phoneNumber: '$_countryCode$_phoneNumber',
  verificationCompleted:(PhoneAuthCredential credential) {
    print('verificationCompleted');
  },
  verificationFailed: (FirebaseAuthException e) {
    print('verificationFailed');
  },
  codeSent: (String verificationId, int resendToken) {
    print('codeSent');
  },
  codeAutoRetrievalTimeout: (String verificationId) {
    print('codeAutoRetrievalTimeout');
  },
);
Run Code Online (Sandbox Code Playgroud)

[在此输入图像描述

Zel*_*elf 5

自上次使用以来,Firebase Phone Auth 已更新。

文档指出:

reCAPTCHA 验证:如果无法使用 SafetyNet,例如当用户没有 Google Play 服务支持时,或者在模拟器上测试您的应用时,Firebase 身份验证将使用 reCAPTCHA 验证来完成手机登录流程。

在没有看到 reCAPTCHA 之前,我很惊讶地看到了它,所以我认为我在某个地方设置了不正确的地方。

这是一个很好的安全功能,并且可以与 Firebase Phone Auth 无缝协作。