firebase - Android 上的 Flutter/Firebase verifyPhoneNumber() 总是调用 recaptcha “验证你不是机器人”
问题描述
作为 Firebase verifyPhoneNumber() 流程的一部分,Android 需要什么配置以及在哪里(我需要进行)停止 recaptcha?
在浏览器中的机器人验证打开之前,会记录以下内容:“SafetyNet Attestation 基本完整性失败”。
我已经验证了以下内容:
- 为我的项目启用了 Android 设备验证。然而,这并没有起到任何作用。
- 正如许多 SO 帖子所建议的那样,删除了 Firebase Analytics 和其他依赖项,但仍然无济于事。
- 我已经添加了我的 SHA1,但也将我的 SHA256 添加到了 Firebase 项目设置中。
- 为了排除我的应用程序中的某种依赖问题,我创建了一个全新的准系统 Flutter 应用程序,除了 Firebase Core 和 Auth 以及 Flutter 中 Firebase 所需的典型设置之外,它的依赖项为零。发生同样的事情(屏幕录制)。
- 更新 - 此处可能的答案: 文档状态:“reCAPTCHA 验证:如果无法使用 SafetyNet,例如当用户没有 Google Play 服务支持时,或者在模拟器上测试您的应用时,Firebase 身份验证使用 reCAPTCHA验证以完成电话登录流程。” 我猜它是根据文档工作的,但是在 SO 上有很多帖子,用户表示即使在模拟器中他们也能够克服这个问题。
此应用未发布到 Google Play,仅在模拟器和物理 Android 设备上进行测试。
Firebase 中发生了一些变化,但我找不到任何文档说明如何在 Android 上为 Firebase verifyPhoneNumber() 克服 recaptcha。
在recaptcha 返回后,codeSent
returns 和其他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');
},
);
[
解决方案
自从我上次使用以来,Firebase 电话身份验证已更新。
文档状态:
reCAPTCHA 验证:如果无法使用 SafetyNet,例如当用户没有 Google Play 服务支持时,或者在模拟器上测试您的应用时,Firebase 身份验证会使用 reCAPTCHA 验证来完成手机登录流程。
在之前没有看到 reCAPTCHA 之后看到它让我感到惊讶,所以我认为我的某些设置不正确。
只是一个很好的安全功能,可以与 Firebase Phone Auth 无缝协作。
推荐阅读
- node.js - 如何在同一个 handler.js 文件中调用另一个 AWS 函数?并附加查询字符串参数?
- react-native - 如何添加填充或更改底部标签 RNN 的高度
- mysql - SQL query to get data between 2 date valid time table
- java - JavaFX 1.8 中的定时器(时钟)
- node.js - 根据用户选择在持久和非持久会话之间切换
- laravel - Laravel - 传递给 App\Exports\UserresponseExport::__construct() 的参数 1 必须是字符串类型
- java - Jaspersoft Studio - 如何创建自定义函数来增加/减少条形图中条形的宽度?
- javascript - 未读取图像数组
- amazon-web-services - 使用函数将多个查询从 Redshift 卸载到 Amazon S3
- python - python Pandas |如何将使用rake函数提取的关键字分配到新列中