求可快速创建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
相关产品推荐
相关产品推荐

