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

为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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:33:22