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

如何在React Native Expo项目中禁用Firebase手机认证的reCAPTCHA验证

解决方案

首先明确:Firebase 手机号认证的 reCAPTCHA 是官方设定的强制安全防护措施,无法直接完全移除,但可以通过配置实现用户无感知的验证效果,体验上和完全禁用一致。

第一步:修改前端代码实现不可见验证

你可以直接修改现有代码的3处位置:

  1. 调整 FirebaseRecaptchaVerifierModal 组件配置,开启不可见验证、隐藏验证标识
// 修改前
<FirebaseRecaptchaVerifierModal
  ref={recaptchaVerifier}
  firebaseConfig={firebaseConfig}
  attemptInvisibleVerification={attemptInvisibleVerification}
/>

// 修改后
<FirebaseRecaptchaVerifierModal
  ref={recaptchaVerifier}
  firebaseConfig={firebaseConfig}
  attemptInvisibleVerification={true}
  hideBadge={true}
/>
  1. 删除代码末尾的 reCAPTCHA 横幅渲染逻辑,避免多余UI展示:
    删掉这一行即可:
{attemptInvisibleVerification && <FirebaseRecaptchaBanner />}
  1. 确保你定义 attemptInvisibleVerification 状态时默认值设为 true:
const [attemptInvisibleVerification, setAttemptInvisibleVerification] = useState(true);

第二步:原生端配置跳过reCAPTCHA(生产环境生效)

如果是打原生包发布,还可以配置系统级的静默验证,完全不需要reCAPTCHA参与:

  • 安卓端:在Google Cloud控制台为你的项目启用Play Integrity API,之后进入Firebase控制台→身份验证→设置→电话验证,开启「使用Play Integrity完成静默验证」选项,打包后的安卓APP就会走系统层验证,不会触发reCAPTCHA
  • iOS端:在Firebase控制台配置好APNs推送证书,iOS真机运行时会走静默推送验证,不会弹出reCAPTCHA窗口

注意事项

  • Expo Go开发环境下没有集成原生的Play Integrity/APNs配置,偶尔可能触发reCAPTCHA弹窗,属于正常现象,打原生包后就不会出现
  • 不要完全删除FirebaseRecaptchaVerifierModal组件和recaptchaVerifier参数,verifyPhoneNumber方法要求必须传入验证器实例,直接移除会触发接口报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 13:54:03