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

如何在Firebase模拟器中测试App Check功能并解决未授权错误?

Firebase模拟器测试App Check授权问题解决方法

方法一:模拟器环境下跳过App Check验证

在Cloud Functions代码中,通过环境变量判断是否处于模拟器环境,直接跳过App Check校验,快速测试函数逻辑:

const functions = require("firebase-functions");
const { initializeAppCheck } = require("firebase-admin/app-check");

initializeAppCheck();

exports.yourTargetFunction = functions.https.onCall((data, context) => {
  // 检测是否为模拟器环境
  if (process.env.FUNCTIONS_EMULATOR === "true") {
    // 直接执行业务逻辑,跳过App Check验证
  } else {
    // 生产环境正常校验App Check
    if (!context.app) {
      throw new functions.https.HttpsError(
        "failed-precondition",
        "此函数需要App Check授权,请启用App Check后重试"
      );
    }
  }

  // 你的函数业务逻辑代码
  return { result: "success" };
});

方法二:使用App Check调试令牌验证

和生产环境逻辑一致,模拟器支持通过调试令牌完成授权,适合测试完整授权流程:

  1. 先在Firebase控制台的App Check设置中,添加并获取调试令牌
  2. 调用模拟器中的函数时,在请求头中携带X-Firebase-AppCheck字段,值为你的调试令牌
    • 如果使用Callable函数,客户端可在开发/模拟器环境下指定调试令牌:
      import { initializeAppCheck, ReCaptchaV3Provider } from "firebase/app-check";
      
      const appCheck = initializeAppCheck(app, {
        provider: new ReCaptchaV3Provider('你的ReCaptcha站点密钥'),
        isTokenAutoRefreshEnabled: true,
        // 仅开发环境使用调试令牌
        debugToken: import.meta.env.MODE === 'development' ? '你的调试令牌' : undefined
      });
      
  3. 确保模拟器已关联你的Firebase项目,这样模拟器会读取项目中配置的调试令牌列表,允许合法令牌通过验证

注意事项

  • 方法一适合快速验证函数核心逻辑,无需额外配置;方法二更贴近生产环境,适合测试App Check的完整校验流程
  • 模拟器环境变量FUNCTIONS_EMULATOR由Firebase CLI自动设置,无需手动配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 03:52:50