You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android端Firebase AuthUI手机号认证加SafetyNet仍触发reCAPTCHA,无法自动读OTP

Firebase AuthUI SafetyNet 生效及OTP自动识别补充配置说明

以下是你需要补充检查的全部配置项:

  • 首先校验Firebase控制台的签名指纹配置:你需要在Firebase项目设置页,添加所有运行环境对应的SHA-256签名指纹,包括本地debug签名、测试环境签名、正式release签名。如果你的应用上架了Google Play且启用了Google Play应用签名,还需要同步添加Google Play后台给出的应用签名SHA-256值。未正确配置SHA-256是SafetyNet无法生效的最常见原因。
  • 检查Google Cloud项目的API启用状态:进入Firebase项目对应的Google Cloud控制台,确认SafetyNet Attestation API已处于启用状态,未启用该API时Firebase会自动降级到reCAPTCHA验证流程。
  • 检查Firebase Auth后台配置:进入Firebase控制台「Authentication」-「设置」页,在电话号码登录的配置分类下,确认验证优先级设置为优先使用SafetyNet,仅当SafetyNet不可用时才降级到reCAPTCHA,部分旧项目默认会强制启用reCAPTCHA验证。
  • 检查设备侧Google Play服务版本:SafetyNet要求设备上的Google Play服务版本不低于17.0.0,你可以在应用启动时添加版本校验逻辑,版本不足时提示用户升级Google Play服务。
  • 排查依赖版本冲突:你可以执行./gradlew app:dependencies命令排查项目中的依赖冲突,确保firebase-auth、firebase-ui-auth、play-services-safetynet三个核心依赖的版本互相兼容,存在冲突时强制指定统一的play-services基础库版本即可。
  • 补充SMS Retriever相关配置:要实现OTP自动读取,你需要在AndroidManifest.xml中添加如下权限:
<uses-permission android:name="com.google.android.gms.permission.SMS_RETRIEVER"/>
  • 补充混淆规则:如果你开启了ProGuard/R8代码混淆,需要在proguard-rules.pro中添加如下规则,避免相关类被误删导致功能失效:
-keep class com.google.android.gms.safetynet.** { *; }
-keep class com.google.firebase.auth.** { *; }
-keep class com.google.android.gms.auth.api.phone.** { *; }

完成以上全部配置后重新打包测试,即可正常触发SafetyNet验证,无需跳转reCAPTCHA,同时实现OTP验证码自动读取。

内容的提问来源于stack exchange,提问作者TrenT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 03:06:03