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

Google Cloud Function初始化App后仍报默认Firebase App未创建错误

问题解决:Firebase Cloud Function 自定义令牌创建错误

错误原因

你混淆了Firebase客户端SDK与Admin SDK的使用场景:

  • 你初始化的是Firebase Admin SDK,但调用getAuth()时用的是客户端SDK的firebase/auth模块
  • 客户端SDK的getAuth()需要单独初始化客户端App实例,而你并未做这一步,导致找不到默认App

创建自定义令牌是Admin SDK的专属功能,必须使用Admin SDK的Auth模块来实现。

修正步骤

  1. 替换客户端SDK的Auth模块为Admin SDK的Auth模块
  2. 确保Admin App初始化逻辑正确(Cloud Functions环境下无需传入参数,会自动读取项目配置)
  3. 使用Admin SDK的getAuth()方法创建自定义令牌

修正后的代码

const functions = require("firebase-functions");
const { initializeApp } = require("firebase-admin/app");
const { getAuth } = require("firebase-admin/auth"); // 改用Admin SDK的Auth模块

// Cloud Functions环境下,initializeApp无需参数,自动加载项目配置
initializeApp();

exports.login = functions
    .region("europe-west2")
    .https.onRequest(async (request, response) => {
      const uid = request.query.uid;
      
      // 先校验uid是否存在
      if (!uid) {
        return response.status(400).send("缺少uid参数");
      }

      try {
        const customToken = await getAuth().createCustomToken(uid);
        response.status(200).send(customToken);
      } catch (error) {
        response.status(406).send(error.message);
        console.error("创建自定义令牌失败:", error);
      }
    });

额外说明

  • 改用async/await替代then/catch让代码逻辑更清晰,同时避免潜在的响应重复发送问题
  • 增加了uid参数校验,提前拦截非法请求
  • Cloud Functions部署时,确保已通过firebase init functions完成项目关联,Admin SDK会自动获取项目权限

内容的提问来源于stack exchange,提问作者chris herd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:22:43