为iOS旧应用的Firebase Function添加AppCheck后遇未认证错误求助
iOS Firebase Functions 添加AppCheck后出现Unauthenticated错误的排查解决
可能的原因及解决方案
1. Debug令牌未添加到控制台白名单
你的应用日志已经输出了App Check debug令牌,但必须手动将这个令牌添加到Firebase控制台的白名单中,否则云函数会拒绝该令牌的请求。
- 操作:进入Firebase控制台 → 你的项目 → App Check → 对应iOS应用 → 找到「Debug tokens」区域 → 点击「添加调试令牌」,粘贴日志中的token并保存。
2. 云函数v2缺少项目级App Check密钥配置
对于Firebase Functions v2版本,启用enforceAppCheck后,需要确保项目已配置App Check服务器密钥:
- 操作:进入Firebase控制台 → App Check → 顶部「项目设置」标签 → 生成「App Check 服务器密钥」,确保密钥状态为启用。
3. 旧版本Functions SDK不会自动携带App Check令牌
你使用的10.5.0版本Firebase Functions SDK,不会自动为HTTPS Callable请求附加App Check令牌,需要手动获取令牌并设置请求头:
修改AppDelegate中的调用代码为:
// 获取App Check令牌 [[FIRAppCheck sharedInstance] tokenWithCompletion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) { if (token) { // 创建Callable请求并设置App Check头 FIRHTTPSCallable *callable = [_functions HTTPSCallableWithName:@"isMyFunctionActive"]; callable.requestHeaders = @{@"X-Firebase-AppCheck": token.token}; // 发起调用 [callable callWithCompletion:^(FIRHTTPSCallableResult *_Nullable result, NSError *_Nullable error) { // 处理响应逻辑 }]; } else { // 处理令牌获取失败的情况 } }];
4. Debug Provider与App Attest配置冲突
你代码中使用了FIRAppCheckDebugProviderFactory,这会强制使用Debug模式的令牌验证,而非控制台配置的App Attest:
- 如果是测试环境:确保Debug令牌已加入白名单(对应第1点);
- 如果是生产环境:移除
setAppCheckProviderFactory的代码,让SDK自动使用App Attest Provider。
内容的提问来源于stack exchange,提问作者Wonton
相关产品推荐
相关产品推荐

