Firebase令牌自定义声明不显示求助:设置后刷新令牌无对应声明
Firebase自定义声明不显示问题排查方案
先确认服务端代码是否真的执行成功
给setCustomUserClaims加上错误捕获,排查是否有执行异常,同时确保传入的userId是正确的用户UID(别用邮箱或其他错误标识):try { await getAuth().setCustomUserClaims(userId, {"admin": true}); console.log("自定义声明设置成功"); } catch (error) { console.error("设置自定义声明失败:", error); }先去Firebase控制台验证声明是否存在
直接打开Firebase控制台的用户详情页,查看该用户的自定义声明列表。如果控制台里都没有admin: true,说明服务端设置环节出了问题,和客户端刷新无关。客户端强制刷新的正确操作
避免用可选链导致的静默失败,先确认用户已登录再执行刷新:if (auth.currentUser) { // 先强制刷新ID令牌 await auth.currentUser.getIdToken(true); // 再获取包含声明的令牌结果 const idTokenResult = await auth.currentUser.getIdTokenResult(); console.log("当前用户自定义声明:", idTokenResult.claims); } else { console.log("用户未登录,无法获取令牌"); }如果还是不行,试试让用户登出再重新登录,部分场景下需要重新建立会话才能获取更新后的声明。
关于延迟问题
自定义声明设置后基本是实时生效的,极端情况可能有几秒同步延迟,但不会超过1分钟。如果等待超过1分钟还是没显示,直接排除延迟因素,回到前面的步骤排查。检查客户端SDK版本
确保Firebase Auth SDK是最新版本,旧版本可能存在令牌刷新的bug,更新后重试。
内容的提问来源于stack exchange,提问作者Marcus
相关产品推荐
相关产品推荐

