You need to enable JavaScript to run this app. 如何使用Admin SDK在Authentication emulator中创建带指定登录时间的匿名账户
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Admin SDK在Authentication emulator中创建带指定登录时间的匿名账户

Admin SDK 实现 Auth Emulator 下自定义上次登录时间的匿名测试账号创建

实现流程

  1. 调用admin.auth().createUser()接口创建匿名账号,无需传入邮箱、密码等身份标识字段
  2. 调用admin.auth().updateUser()接口修改用户元数据的lastSignInTime字段为指定时间,该操作仅Auth Emulator环境支持

完整示例代码

const admin = require('firebase-admin');
// Emulator环境下可直接使用模拟项目ID初始化,无需真实生产凭证
admin.initializeApp({
  projectId: 'demo-test-project'
});

// 计算2个月前的时间,如需精准自然月计算可引入日期处理库
const twoMonthsAgo = new Date(Date.now() - 2 * 30 * 24 * 60 * 60 * 1000);

async function createTestAnonUser() {
  // 创建匿名账号:省略所有身份类字段即可生成匿名用户
  const anonUser = await admin.auth().createUser({
    // 可选:指定固定测试uid,方便后续测试流程引用
    uid: 'test-anon-001',
    displayName: '测试匿名账号',
    disabled: false
  });

  // 自定义上次登录时间,仅Emulator环境可执行该修改
  await admin.auth().updateUser(anonUser.uid, {
    metadata: {
      lastSignInTime: twoMonthsAgo.toISOString()
      // 如需同步自定义创建时间,可在此添加 creationTime 字段
    }
  });

  console.log('测试匿名账号创建完成:', anonUser.toJSON());
}

createTestAnonUser();

关键注意事项

  • 环境前置配置:需要提前启动Firebase Auth Emulator,且配置环境变量FIREBASE_AUTH_EMULATOR_HOST=127.0.0.1:9099,否则Admin SDK会尝试连接生产环境项目,无法自定义lastSignInTime字段。
  • 匿名账号校验:创建完成后可通过anonUser.providerData.length === 0确认账号为匿名类型,该字段为空代表未绑定任何登录提供商。
  • 参数格式要求:lastSignInTime需传入ISO 8601格式的时间字符串或Date实例,不可直接传入时间戳数字,否则会触发参数校验报错。
  • 生产环境限制:生产环境下lastSignInTime由Firebase Auth服务端自动维护,Admin SDK无权限手动修改,该自定义能力仅适用于本地测试场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 05:15:00