React Native iOS端Firebase手机号认证:关闭reCAPTCHA Enterprise后仍无法禁用的问题
遇到这种情况真的挺闹心的,明明在控制台关了reCAPTCHA Enterprise,结果生产环境还是报错,我来给你分享几个实际开发中验证有效的解决思路:
先同步本地Firebase配置文件
控制台修改设置后,本地的GoogleService-Info.plist可能没自动更新,你需要去Firebase控制台重新下载最新的配置文件,替换iOS项目里的旧文件。替换后记得检查文件里的reCAPTCHA相关字段,确保没有残留的Enterprise配置项。彻底清理项目缓存和构建产物
Xcode和React Native的缓存经常会“搞事情”,按这个顺序来清:- 用Xcode打开项目,按
Cmd+Shift+K清理项目,再手动删除~/Library/Developer/Xcode/DerivedData里对应项目的文件夹 - 进入iOS目录,执行
pod deintegrate,删除Podfile.lock,然后重新执行pod install - 回到项目根目录,执行
npx react-native clean,再用npx react-native start --reset-cache重启metro服务
- 用Xcode打开项目,按
检查代码里的认证配置残留
虽然你在开发环境设了appVerificationDisabledForTesting = true,但要确认生产环境的代码有没有硬编码开启reCAPTCHA的配置。比如初始化Firebase Auth时,有没有不小心加了强制启用reCAPTCHA Enterprise的参数,或者有没有第三方依赖的代码覆盖了这个设置。确认云端配置是否真的生效
有时候控制台的设置同步会有延迟,你可以多刷新几次控制台页面,或者等15-20分钟再重新构建项目。另外要仔细检查是不是选对了对应的项目和iOS应用,别误操作到其他环境的项目了。升级Firebase SDK版本
旧版本的Firebase SDK可能存在控制台设置不同步的bug,建议把@react-native-firebase/auth模块和iOS端的Firebase SDK都升级到最新稳定版,然后重新构建项目测试。验证生产构建的归档包
如果是TestFlight或App Store的生产包报错,要确认是不是用的修改配置后的最新归档。之前开启reCAPTCHA时打的包可能还在,一定要重新打包上传,确保生产构建用的是最新的配置和代码。
内容来源于stack exchange

