You need to enable JavaScript to run this app. Firebase自定义认证lastSignInTime为null 如何正确更新该字段
优惠活动
大模型
产品
解决方案
定价
更多

Firebase自定义认证lastSignInTime为null 如何正确更新该字段

自定义Token场景下 lastSignInTime 始终为null的解决方法

字段更新逻辑的核心规则

lastSignInTime 是Firebase Auth内置的用户元数据字段,更新逻辑是服务端写死的:

  • 仅当用户通过Firebase官方客户端SDK触发完整的认证流程时,服务端才会自动捕获这次登录事件,把该字段更新为当前时间
  • 通过Admin SDK执行的用户创建(admin.auth().createUser())、用户信息更新(admin.auth().updateUser())操作,以及后端直接生成自定义Token的行为,都不会被判定为有效登录事件,因此不会触发该字段的自动更新
  • 该字段没有开放Admin SDK的手动写入权限,没法在创建、更新用户的接口里直接传值修改,就算传入相关参数也会被服务端直接忽略

让字段正确更新的操作路径

  1. 服务端按原有逻辑生成自定义Token,返回给前端业务系统
  2. 前端接入对应平台的Firebase客户端SDK,拿到自定义Token后调用官方的自定义Token登录接口完成认证
    • Web端对应调用 signInWithCustomToken(auth, customToken)
    • Android/iOS/Flutter 等平台的自定义Token登录逻辑完全一致
  3. 认证流程走完后,Firebase Auth服务端会自动标记这次登录行为,把对应用户记录里的 lastSignInTime 更新为本次登录的时间。这时候不管是在Firebase控制台查看用户,还是通过Admin SDK拉取用户记录,都能看到正确的登录时间值。

无法接入客户端SDK场景的替代方案

如果业务流程完全没法走Firebase客户端SDK的登录链路,不要尝试强行修改Firebase内置的lastSignInTime字段(官方没有开放对应的修改能力),可以直接在自有业务数据库(如Firestore、内部业务库)中维护独立的用户登录时间戳字段,满足后续查询、统计需求即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.28 06:45:07