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); }, []);
排查与解决步骤
精简环境变量配置
Expo项目无需配置FIRAAppCheckDebugToken(这是原生iOS项目的变量),保留FIREBASE_APP_CHECK_DEBUG_TOKEN和FIREBASE_APP_CHECK_DEBUG即可,同时确保令牌与Firebase控制台生成的完全一致,无空格或字符遗漏。修正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 ); }, []);确保环境变量生效
运行eas build --profile development --platform ios重新构建开发包,直接刷新Expo Go不会更新环境变量,必须重新构建才能注入配置。后端App Check配置验证
确认本地Firebase后端已启用App Check,且关联的服务(如Cloud Functions)允许调试令牌验证,同时在Firebase控制台App Check设置中开启调试模式。同步令牌获取时机
getToken()是异步方法,需等待App Check激活完成后再调用,避免获取空令牌:useEffect(() => { const initAppCheck = async () => { await AppCheck().activate('debug', true); const token = await AppCheck().getToken(); // 在此处使用token发起请求 }; initAppCheck(); }, []);
内容的提问来源于stack exchange,提问作者Catalin Stefan
相关产品推荐
相关产品推荐

