You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Firebase用户指定UID对应的所有custom token?

Firebase自定义token查询方案

Firebase官方没有提供直接查询指定UID对应所有已生成custom token的接口,因为Firebase服务端本身不会持久化存储你通过Admin SDK生成的自定义token。

custom token本质是带签名的JWT短期凭证,生成后直接返回给调用方,Firebase Auth仅会在客户端使用该token兑换正式ID token时校验其签名和有效性,不会留存所有生成过的token记录。

如果你需要实现该查询能力,需要自行在生成token时做存储落地,参考实现代码如下:

生成token时同步存储

const admin = require('firebase-admin');
// 示例用Firestore存储,你也可以替换为自己的业务数据库
const db = admin.firestore();

const claims = {};
const UID = ""; 
admin.auth()
.createCustomToken(UID, claims)
.then(async (customToken) => { 
   // 存储生成的token,关联对应UID
   await db.collection('custom_token_records').add({
     uid: UID,
     token_value: customToken,
     create_time: admin.firestore.FieldValue.serverTimestamp(),
     // custom token默认有效期为1小时,记录过期时间方便后续清理
     expire_time: Date.now() + 3600 * 1000
   })
});

查询指定UID的所有token

async function listAllCustomTokensByUid(uid) {
  const tokenSnapshot = await admin.firestore()
    .collection('custom_token_records')
    .where('uid', '==', uid)
    .orderBy('create_time', 'desc')
    .get();
  
  return tokenSnapshot.docs.map(doc => doc.data());
}

注意:custom token默认有效期仅1小时,过期后即使保留记录也无法正常使用,建议定期清理过期记录节约存储资源。如果你是需要作废某个用户的所有有效登录凭证,不需要查询custom token,直接调用admin.auth().revokeRefreshTokens(uid)即可让该用户所有已签发的refresh token、以及用custom token兑换得到的ID token全部失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:45:05