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

React Native Firebase Auth调用signInWithPhoneNumber遇auth/internal-error求助

React Native Firebase Auth手机号登录出现[auth/internal-error]排查方案

以下是针对问题的具体排查和解决步骤:

1. 检查Firebase控制台核心配置

  • 确认项目已在Firebase控制台 > 认证 > 登录方法中启用手机号登录
  • 查看是否开启了应用验证,Expo开发客户端属于临时环境,需确保reCAPTCHA配置没有限制开发域名(Firebase默认允许开发环境,但可检查是否有地区或IP限制)
  • 检查手机号验证配额:Firebase免费版有配额限制,超出后会触发内部错误,可在控制台用量板块查看当前使用情况

2. 适配Expo开发客户端环境

  • 确保Expo项目配置了正确的网络权限:Android端需包含<uses-permission android:name="android.permission.INTERNET" />(Expo默认添加,若有自定义配置需确认);iOS端检查Info.plist是否允许HTTPS请求(默认开启,无需额外配置,但开发环境若有代理需排查)
  • 尝试使用expo prebuild生成原生项目文件后再测试,部分Firebase功能在Expo开发客户端沙箱中可能存在兼容性问题

3. 验证手机号格式与地区支持

  • 直接传入标准E.164格式手机号(如+8613xxxxxxxxx)替代formatted.formattedNumber变量,排除格式处理逻辑的问题
  • 检查Firebase项目是否限制了手机号所属地区,部分地区的手机号验证需要额外配置或暂不支持,可在控制台认证设置中查看地区限制规则

4. 排查依赖版本问题

  • 当前使用的@react-native-firebase/app和auth版本均为21.10.0,尝试降级到21.9.0或升级至最新稳定版,该版本可能存在已知的手机号验证bug
  • 确保所有Firebase相关依赖版本保持一致,避免版本不兼容导致的内部错误

5. 打印完整错误信息定位根因

修改错误捕获代码,打印完整错误详情:

getAuth()
  .signInWithPhoneNumber(formatted.formattedNumber)
  .then((confirmationResult: FirebaseAuthTypes.ConfirmationResult) => {
    if (confirmationResult) {
      setPhoneConfirmation(confirmationResult);
    }
  }).catch(e => {
    console.error(JSON.stringify(e, null, 2));
  });

同时查看Firebase控制台 > 认证 > 日志,里面会记录错误的具体触发原因(如reCAPTCHA验证失败、手机号未通过风控等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:32:47