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

2023年Android端Firebase短信验证(OTP)中如何禁用reCaptcha

解决Firebase手机号验证仍触发reCaptcha的问题

关键排查与修复步骤

  • 确认App Check的完全切换
    登录Firebase控制台,进入App Check页面,确保对应Android应用的校验提供者只有Play Integrity,Safety Net的配置已彻底删除(而非仅禁用),同时开启"强制执行"选项——手机号验证会直接依赖App Check的校验结果,残留的旧配置可能导致兜底触发reCaptcha。

  • 校验Play Integrity的配置细节

    1. 核对Google Play Console的App Signing页面,将页面显示的上传密钥、应用签名密钥的SHA-1和SHA-256全部同步到Firebase项目的应用设置中,不要遗漏应用签名密钥(这是很多人踩坑的点)。
    2. 确保Android项目模块级build.gradle中依赖的Play Integrity版本为最新稳定版,比如:
      implementation 'com.google.firebase:firebase-appcheck-playintegrity:16.0.2'
      
      并确认App Check初始化代码正确,没有混用其他校验提供者:
      FirebaseApp.initializeApp(applicationContext)
      val appCheck = FirebaseAppCheck.getInstance()
      appCheck.installAppCheckProviderFactory(
          PlayIntegrityAppCheckProviderFactory.getInstance()
      )
      
    3. 必须使用通过Google Play渠道分发的发布版APK/AAB测试(包括内部测试轨道),Debug版若未配置Debug验证器,会默认触发reCaptcha兜底逻辑。
  • 检查手机号验证代码
    确保手机号验证的初始化代码中,没有手动指定reCaptcha相关参数,比如不要调用PhoneAuthOptions.Builder().setRecaptchaToken(...)这类强制启用reCaptcha的方法,让Firebase自动复用App Check的校验结果。

  • 排查设备环境问题

    1. 测试设备需安装最新版Google Play服务(建议22.09.14及以上),旧版本可能无法正常完成Play Integrity校验,导致降级到reCaptcha。
    2. 优先使用实体设备测试,部分模拟器的Play服务环境不完整,会影响校验逻辑。

兜底测试方案

若以上配置均确认无误,可通过Firebase控制台App Check页面的"测试"功能生成测试令牌,在应用初始化时临时设置:

FirebaseAppCheck.getInstance().setTokenProvider(object : AppCheckTokenProvider {
    override fun getToken(): Task<AppCheckToken> {
        return Tasks.forResult(AppCheckToken("你的测试令牌", 3600000))
    }
})

如果测试模式下不再触发reCaptcha,说明生产环境的Play Integrity校验仍有配置遗漏,重点复查Google Play Console与Firebase的密钥同步情况。

内容的提问来源于stack exchange,提问作者Md Abdur Rhman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 01:52:32