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

使用Firebase 1.0新SDK通过云函数生成自定义认证令牌

解决Firebase Admin初始化及自定义令牌生成的升级问题

嘿,我之前升级Firebase Functions和Admin SDK的时候也踩过这个坑,给你理清楚正确的做法:

首先要明确:从firebase-admin@5.11.0和firebase-functions@1.0.0开始,在Cloud Functions运行环境中,你完全不需要手动传入凭证或应用配置给initializeApp。Firebase会自动通过运行时环境注入项目的服务账号凭证和基础配置,你只需要调用无参数的admin.initializeApp()就能完成初始化。

关于自定义令牌生成的变化

你之前通过手动生成凭证传入initializeApp的方式,现在完全不需要了。默认注入的服务账号已经拥有生成自定义令牌的权限,直接使用初始化后的admin.auth().createCustomToken()方法即可,逻辑和之前基本一致。

要不要修改process.env.FIREBASE_CONFIG?

答案是不需要。这个环境变量是Firebase自动设置的,里面包含项目的基础配置(比如项目ID、存储桶地址等),但服务账号凭证是运行时自动加载的,不需要你手动序列化后放入这个变量中。手动修改反而可能导致初始化出错。

新旧代码对比参考

旧版本写法(升级前)

const admin = require('firebase-admin');
const functions = require('firebase-functions');
const serviceAccount = require('./service-account.json');

// 手动传入凭证和配置
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://your-project.firebaseio.com"
});

exports.createCustomToken = functions.https.onCall((data, context) => {
  const uid = data.uid;
  return admin.auth().createCustomToken(uid)
    .then(token => ({ token }))
    .catch(err => {
      throw new functions.https.HttpsError('internal', '生成令牌失败', err);
    });
});

新版本写法(升级后)

const admin = require('firebase-admin');
const functions = require('firebase-functions');

// 直接无参数初始化
admin.initializeApp();

exports.createCustomToken = functions.https.onCall((data, context) => {
  const uid = data.uid;
  
  if (!uid) {
    throw new functions.https.HttpsError('invalid-argument', '必须提供UID');
  }
  
  return admin.auth().createCustomToken(uid)
    .then(token => ({ token }))
    .catch(err => {
      throw new functions.https.HttpsError('internal', '生成令牌失败', err);
    });
});

本地开发注意事项

如果你在本地测试Cloud Functions,只需要确保已经通过firebase login登录账号,并且使用firebase serve启动本地服务即可——Firebase CLI会自动帮你配置好所需的环境变量和凭证,不需要额外操作。

内容的提问来源于stack exchange,提问作者Murphy Randle

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:48:18