Firebase用户批量注册循环实现方案咨询
Firebase明文密码批量注册实现方案
本方案完全基于明文密码直接创建用户,无需预先处理密码哈希,不涉及auth:import工具,匹配你的需求。
前置准备
- 运行环境:本地Node.js环境即可,无需部署到线上
- 依赖安装:执行以下命令安装所需包
npm install firebase-admin xlsx - 准备Firebase服务账户密钥:在Firebase控制台→项目设置→服务账户→生成新的私钥,保存到本地脚本同级目录,命名为
service-account-key.json - 确认Excel列名:保证存储邮箱的列名为
email、存储密码的列名为password,如果是其他名称对应修改代码里的字段即可
完整实现代码
const admin = require("firebase-admin"); const XLSX = require('xlsx'); const serviceAccount = require("./service-account-key.json"); // 初始化Firebase Admin admin.initializeApp({ credential: admin.credential.cert(serviceAccount) }); const auth = admin.auth(); // 读取Excel用户数据 const workbook = XLSX.readFile('./users.xlsx'); const worksheet = workbook.Sheets[workbook.SheetNames[0]]; const users = XLSX.utils.sheet_to_json(worksheet); const validUsers = users.filter(u => u.email && u.password); // 延迟控制函数,避免触发限流 const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms)); // 批量注册主逻辑 const batchCreateUsers = async () => { const successList = []; const failList = []; for (let i = 0; i < validUsers.length; i++) { const { email, password } = validUsers[i]; try { const userRecord = await auth.createUser({ email, password // 可在此处补充displayName、phoneNumber等其他用户属性 }); successList.push({ email, uid: userRecord.uid }); console.log(`进度:${i+1}/${validUsers.length} | 注册成功:${email}`); } catch (err) { failList.push({ email, error: err.message }); console.log(`进度:${i+1}/${validUsers.length} | 注册失败:${email},错误原因:${err.message}`); } // 每次请求间隔1.5秒,若触发限流可将该值调至2000及以上 await delay(1500); } // 执行完成输出统计结果 console.log('\n===== 批量注册执行完成 ====='); console.log(`成功注册:${successList.length} 个用户`); console.log(`注册失败:${failList.length} 个用户`); if (failList.length > 0) { console.log('失败清单:', failList); } } // 启动批量注册 batchCreateUsers();
注意事项
- 不要移除间隔逻辑直接并发请求,Firebase Auth有接口调用频率限制,高频请求会直接被拦截,500个用户总耗时10-15分钟属于正常范围
- 若Excel里的密码长度不足6位,会触发Firebase密码格式校验报错,建议提前检查Excel数据规范性
- 注册失败的用户会统一输出到failList中,可针对失败原因处理后单独重新注册
内容的提问来源于stack exchange,提问作者Swift newbie
相关产品推荐
相关产品推荐

