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

Firebase Auth短信多因素认证真机报错auth/operation-not-allowed求助

Firebase Auth短信MFA真机报错auth/operation-not-allowed(模拟器正常)

问题详情

模拟器上可正常完成Firebase Auth短信多因素(MFA)注册流程,但在物理设备运行时触发auth/operation-not-allowed错误,完整错误日志如下:

2023-04-17 10:28:00.987600-0400 Wam (Staging)[576:10692] [javascript] 'auth/saga', '@watchPhoneEnrollment', 'MFA Enrollment failed', [Error: [auth/operation-not-allowed] This operation is not allowed. You must enable this service in the console.]

现有配置

依赖版本

  • react: ^17.0.2
  • react-native: ^0.67.5
  • @react-native-firebase/app: ^16.3.0
  • @react-native-firebase/auth: ^16.3.0
  • @react-native-firebase/messaging: ^16.3.0

项目设置

  • 关联GCP项目已启用Identity Platform
  • Firebase/GCP控制台:邮箱登录启用,短信登录禁用,短信MFA功能启用
  • Firebase控制台注册了两个Bundle ID:xxx.local、xxx.staging
  • 同一APN密钥已绑定两个Bundle ID
  • xxx.staging使用正确的GoogleService-Info.plist配置文件
  • xxx.staging已开启推送通知和后台更新权限

已排查内容

  • 排除APN密钥配置问题(该配置仅用于验证MFA请求有效性)
  • 确认项目关联正确,Firebase与GCP控制台均已启用短信MFA

解决方案尝试

  1. 核对Bundle ID对应的应用MFA权限
    即便已在控制台全局启用MFA,仍需检查xxx.staging对应的Firebase应用是否单独开启了MFA支持。进入Firebase控制台→目标应用→Authentication→Sign-in method→Multi-factor authentication,确认当前应用的MFA状态为启用,且短信作为第二因素的选项已勾选。

  2. 测试真机网络与地区限制

    • 部分地区运营商可能拦截Firebase的短信下发请求,导致服务端返回操作不允许。尝试切换网络环境(如WiFi换移动数据,或使用境外网络)测试。
    • 检查Firebase项目的地域设置,确保真机所在地区在服务覆盖范围内。
  3. 清理缓存并重新部署

    • 删除真机上的应用,清理Xcode缓存(快捷键Cmd+Shift+K),重新编译安装应用。
    • 再次确认GoogleService-Info.plist中的CLIENT_ID、PROJECT_ID等核心参数与Firebase控制台对应应用完全匹配,避免混淆local和staging环境的配置文件。
  4. 检查Auth规则与Identity Platform策略

    • 进入Firebase控制台→Authentication→Rules,确保规则允许已认证用户进行MFA注册操作,示例规则:
      rules_version = '2';
      service cloud.firestore {
        match /databases/{database}/documents {
          match /{document=**} {
            allow read, write: if request.auth != null;
          }
        }
      }
      
    • 查看GCP Identity Platform的高级设置,确认没有针对特定应用或用户组的MFA限制策略。
  5. 升级依赖版本
    当前使用的@react-native-firebase/auth版本16.3.0较旧,可能存在真机适配bug。尝试升级到兼容react-native 0.67.5的最新稳定版本(如18.x系列,需提前确认版本兼容性),重新安装依赖后测试。

  6. 检查短信服务配额与付费状态
    进入GCP控制台→Identity Platform→Multi-factor authentication,查看短信服务的配额是否耗尽,或项目是否因免费额度超限/欠费导致服务受限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:42:39