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

Expo项目iOS模拟器无法生成Firebase App Check令牌求助

Expo iOS模拟器Firebase App Check令牌生成失败(403错误)排查方案

错误信息

"error": {
    "code": 403,
    "message": "App attestation failed.",
    "status": "PERMISSION_DENIED"
}

已执行操作

  • 在Firebase控制台「设置」->「App Check」的「管理调试令牌」中创建调试令牌
  • 在eas.json中配置环境变量:
"env": {
    "FIREBASE_APP_CHECK_DEBUG_TOKEN": "***********",
    "FIRAAppCheckDebugToken": "********",
    "FIREBASE_APP_CHECK_DEBUG": "true"
}
  • 安装并导入@react-native-firebase/app-check包
  • 通过useEffect调用激活方法:
useEffect(() => {
  appCheck().activate("ignored", true);
}, []);

排查与解决步骤

  1. 精简环境变量配置
    Expo项目无需配置FIRAAppCheckDebugToken(这是原生iOS项目的变量),保留FIREBASE_APP_CHECK_DEBUG_TOKEN和FIREBASE_APP_CHECK_DEBUG即可,同时确保令牌与Firebase控制台生成的完全一致,无空格或字符遗漏。

  2. 修正App Check激活参数
    模拟器调试模式下,activate方法第一个参数应指定为"debug",而非"ignored",生产环境再替换为Apple App Attest密钥:

    import { AppCheck } from '@react-native-firebase/app-check';
    
    useEffect(() => {
      AppCheck().activate(
        process.env.NODE_ENV === 'development' ? 'debug' : '你的Apple App Attest密钥',
        true
      );
    }, []);
    
  3. 确保环境变量生效
    运行eas build --profile development --platform ios重新构建开发包,直接刷新Expo Go不会更新环境变量,必须重新构建才能注入配置。

  4. 后端App Check配置验证
    确认本地Firebase后端已启用App Check,且关联的服务(如Cloud Functions)允许调试令牌验证,同时在Firebase控制台App Check设置中开启调试模式。

  5. 同步令牌获取时机
    getToken()是异步方法,需等待App Check激活完成后再调用,避免获取空令牌:

    useEffect(() => {
      const initAppCheck = async () => {
        await AppCheck().activate('debug', true);
        const token = await AppCheck().getToken();
        // 在此处使用token发起请求
      };
      initAppCheck();
    }, []);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:31:07