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

2025年:无需SafetyNet/DeviceCheck,禁用Android端Firebase短信验证reCAPTCHA

解决Firebase手机OTP验证中禁用reCAPTCHA(2025年适配方案)

问题背景

当前SafetyNet、Android DeviceCheck已废弃,仅Play Integrity API可用;Firebase手机OTP验证强制弹出reCAPTCHA,但同项目iOS端无此问题;已配置Play Integrity API、SHA密钥、Firebase App Check,仍出现logcat报错:Failed to initialize reCAPTCHA config: No Recaptcha Enterprise siteKey configured for tenant/project *,且phoneAuthOptions变为false。

核心解决方案

Firebase Phone Auth在Android端仅当设备无法通过Play Integrity验证时才会触发reCAPTCHA。要彻底禁用reCAPTCHA,需确保App Check完全依赖Play Integrity完成设备验证,且Phone Auth与App Check正确关联。

具体操作步骤

  1. 确认App Check Provider配置为Play Integrity

    • 进入Firebase控制台 → 项目设置 → App Check
    • 针对Android应用,将Provider设置为「Play Integrity」,而非reCAPTCHA系列选项
    • 确保已为应用启用Play Integrity API(已完成的话可跳过)
  2. 验证SHA密钥的完整性

    • 检查Firebase项目设置中添加的SHA-1、SHA-256是否覆盖所有场景:
      • 调试版:本地开发用的签名密钥SHA
      • 发布版:Google Play应用签名的SHA(若使用Google Play应用签名,需在Play控制台复制对应SHA)
    • 确保密钥无拼写错误,且已同步到Firebase的App配置中
  3. 代码层面关联Phone Auth与App Check

    • 确保App Check已在应用启动时初始化:
      // Kotlin初始化示例
      FirebaseApp.initializeApp(applicationContext)
      val appCheck = FirebaseAppCheck.getInstance()
      appCheck.installAppCheckProviderFactory(
          PlayIntegrityAppCheckProviderFactory.getInstance()
      )
      
    • 初始化PhoneAuthOptions时,不要添加任何reCAPTCHA相关配置,确保使用默认的设备验证逻辑(依赖App Check):
      val phoneAuthOptions = PhoneAuthOptions.newBuilder(FirebaseAuth.getInstance())
          .setPhoneNumber(phoneNumber)
          .setTimeout(60L, TimeUnit.SECONDS)
          .setActivity(this)
          .setCallbacks(callbacks)
          .build()
      PhoneAuthProvider.verifyPhoneNumber(phoneAuthOptions)
      
    • 移除代码中所有手动设置reCAPTCHA Site Key或启用reCAPTCHA的代码
  4. 排查logcat报错根源

    • 若仍出现No Recaptcha Enterprise siteKey configured报错,说明应用仍在尝试加载reCAPTCHA配置,需检查:
      • 是否第三方依赖(如旧版Firebase Auth库)强制引入reCAPTCHA,需升级到最新版Firebase Auth依赖(2025年推荐版本至少为23.x以上)
      • 是否在Firebase控制台的Phone Auth设置中误启用了reCAPTCHA相关选项,确认Phone Auth的设备验证仅依赖App Check
  5. 测试验证

    • 调试版:使用已添加SHA密钥的调试签名打包应用,测试OTP流程,确认无reCAPTCHA弹出
    • 发布版:上传到Google Play内部测试轨道,测试验证流程(需确保Google Play应用签名的SHA已添加到Firebase)

关键说明

  • iOS端默认通过App Attest完成设备验证,因此无需reCAPTCHA;Android端必须确保Play Integrity验证通过,才能跳过reCAPTCHA
  • 若设备未安装Google Play服务(如部分国产定制ROM无GMS),仍会触发reCAPTCHA,这是Firebase的 fallback 机制,无法完全禁用(除非放弃对无GMS设备的支持)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:07:14