如何将从Firebase导出的Auth数据导入Firebase模拟器?
Firebase模拟器导入官方服务Auth导出数据方案
首先明确:Firebase官方模拟器不支持直接导入从Firebase生产服务导出的原生Auth数据,二者的导出结构不兼容。你可以通过格式转换的方式完成导入,具体操作如下:
操作步骤
第一步:导出生产环境Auth数据
确认本地已安装gcloud CLI并登录对应项目账号,执行导出命令:gcloud firebase auth users export ./prod_auth_export.json --project 你的项目ID导出的JSON文件就是全量生产Auth用户数据。
第二步:转换为模拟器兼容格式
模拟器仅识别自身导出的特定结构数据,你需要编写简单脚本把生产导出的字段做映射。以下是Node.js版本的极简转换示例:const prodAuth = require('./prod_auth_export.json'); const fs = require('fs'); const emulatorAuth = { users: prodAuth.users.map(prodUser => ({ localId: prodUser.localId, email: prodUser.email, emailVerified: prodUser.emailVerified, displayName: prodUser.displayName, photoUrl: prodUser.photoUrl, passwordHash: prodUser.passwordHash, passwordSalt: prodUser.salt, createdAt: Number(prodUser.createdAt), lastLoginAt: Number(prodUser.lastLoginAt), providerUserInfo: prodUser.providerUserInfo || [] })) }; // 导出为模拟器要求的文件结构,放在auth_export目录下 fs.mkdirSync('./emulator_data/auth_export', { recursive: true }); fs.writeFileSync('./emulator_data/auth_export/users.json', JSON.stringify(emulatorAuth, null, 2));第三步:导入到模拟器
启动模拟器时直接指定数据目录即可自动识别Auth数据:firebase emulators:start --import ./emulator_data如果需要启动后导入,执行命令:
firebase emulators:import ./emulator_data
注意事项
- 生产环境导出的密码哈希为Firebase专属SCRYPT加密格式,模拟器原生支持识别,导入后用户可以直接用生产环境的原密码在模拟器中登录,不需要额外处理密码字段
- 如果不需要保留用户原始密码,也可以直接调用Firebase Admin SDK批量读取生产环境用户,再批量写入模拟器Auth服务,不需要手动做格式转换
内容的提问来源于stack exchange,提问作者stackbeats
相关产品推荐
相关产品推荐

