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

求可快速创建Firebase用户并添加自定义claims的可用脚本

可用实现脚本(Node.js)

前置依赖

  • 安装Firebase Admin SDK:npm install firebase-admin
  • 准备好有权限的Firebase服务账号JSON配置文件

完整可运行代码

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

// 解析命令行参数
const args = process.argv.slice(2);
if (args.length < 3) {
  console.error('使用方式: node create-user.js <服务账号JSON路径> <用户邮箱> <用户密码> [--uid <自定义UID>] [--claims <JSON格式自定义声明>]');
  process.exit(1);
}

const serviceAccountPath = args[0];
const email = args[1];
const password = args[2];
let uid = null;
let customClaims = {};

// 解析可选参数
for (let i = 3; i < args.length; i++) {
  if (args[i] === '--uid' && i + 1 < args.length) {
    uid = args[i + 1];
    i++;
  } else if (args[i] === '--claims' && i + 1 < args.length) {
    try {
      customClaims = JSON.parse(args[i + 1]);
    } catch (e) {
      console.error('claims参数格式错误,需要为合法JSON字符串');
      process.exit(1);
    }
    i++;
  }
}

// 初始化Firebase Admin
try {
  const serviceAccount = JSON.parse(fs.readFileSync(serviceAccountPath, 'utf8'));
  admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
  });
} catch (e) {
  console.error('服务账号配置读取失败:', e.message);
  process.exit(1);
}

// 创建用户并绑定声明
async function createUserWithClaims() {
  try {
    const userCreateParams = {
      email,
      password,
      ...(uid && { uid })
    };
    const userRecord = await admin.auth().createUser(userCreateParams);
    await admin.auth().setCustomUserClaims(userRecord.uid, customClaims);
    
    console.log('用户创建成功:');
    console.log(`UID: ${userRecord.uid}`);
    console.log(`邮箱: ${userRecord.email}`);
    console.log('绑定的自定义声明:', customClaims);
    process.exit(0);
  } catch (e) {
    console.error('用户创建失败:', e.message);
    process.exit(1);
  }
}

createUserWithClaims();

使用示例

# 不带自定义UID,传入角色声明
node create-user.js ./firebase-admin-config.json test@example.com TestPass123 --claims '{"role":"editor","department":"tech"}'

# 指定自定义UID
node create-user.js ./firebase-admin-config.json admin@example.com AdminPass456 --uid admin_001 --claims '{"role":"admin","isSuperUser":true}'

内容的提问来源于stack exchange,提问作者Nikola-Milovic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:06:08