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

Expo React Native Firebase手机号认证报错及生产OTP问题求助

问题1:开发构建(Expo托管工作流)手机号认证报错 auth/missing-client-identifier

核心原因

Expo托管工作流的开发构建使用独立调试签名密钥,若未将该密钥的SHA指纹添加至Firebase控制台,会导致Play Integrity/reCAPTCHA校验失败。

解决方案

  • 获取开发构建的SHA指纹:
    运行命令获取EAS开发构建的所有哈希值:
    expo fetch:android:hashes
    
    或通过expo credentials:manager选择Android,查看Debug credentials下的SHA1、SHA256值。
  • 将获取到的SHA1、SHA256指纹添加到Firebase控制台对应Android应用的设置中(项目设置→应用→Android应用→添加指纹)。
  • 重新下载google-services.json替换项目内文件,执行eas build --profile development重新生成开发构建。
  • 额外验证:确保Cloud Console中已启用Play Integrity API,且Firebase Auth的Phone认证方式处于启用状态。
问题2:生产环境OTP验证码无法登录报错 auth/session-expired

核心原因

OTP会话过期、签名不匹配、验证流程逻辑问题或依赖库版本bug都可能触发该错误。

解决方案

  • 验证生产签名一致性:
    确认Play控制台「应用签名」中的SHA1、SHA256指纹与Firebase控制台添加的完全一致(包含应用签名密钥和上传密钥的指纹)。
  • 优化OTP验证流程:
    • 限制用户在5分钟有效期内输入验证码,避免重复发送新验证码(每次发送新验证码会失效旧会话)。
    • 发送验证码后,复用同一个PhoneAuthProvider实例完成验证,不要重新初始化认证会话。
    • 用户点击「重新发送」时,先调用PhoneAuthProvider.verifyPhoneNumber返回的取消函数终止旧会话,再发送新验证码。
  • 升级依赖版本:
    将@react-native-firebase/auth升级至最新稳定版,修复旧版本可能存在的OTP会话管理bug。
  • 检查Firebase配置:
    确认Firebase控制台「Auth→登录方式→手机号」已启用,无区域限制或异常规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:13:14