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

Firebase登录后获取stsTokenManager返回undefined问题求助

解决Firebase Auth中无法访问stsTokenManager的问题

你遇到的情况很典型——虽然控制台打印user对象时能看到stsTokenManager,但直接通过response.user.stsTokenManager访问会返回undefined,这是因为stsTokenManager是Firebase User对象的内部非公开属性,Firebase并没有把它暴露给开发者直接调用。

正确获取Access Token的方式

Firebase Auth提供了官方方法来获取有效的Access Token,推荐使用getIdToken()方法,它会返回一个Promise,resolve后就能拿到当前可用的accessToken:

loginUser = (email, password) => {
  try {
    firebase.auth().signInWithEmailAndPassword(email, password)
      .then((response) => {
        // 使用getIdToken获取accessToken
        response.user.getIdToken()
          .then((accessToken) => {
            console.log("Access Token:", accessToken);
            // 这里可以用accessToken做后续业务操作
          })
          .catch((tokenError) => {
            console.error("获取Token失败:", tokenError);
          });
      })
      .catch((authError) => {
        alert('登录失败:' + authError.message);
      });
  } catch (error) {
    alert('检查你的邮箱或密码');
  }
}

额外提示:修复代码中的语法问题

你的原代码存在小的语法错误:then块的括号没有闭合,这也可能导致代码执行异常,上面的示例已经帮你修正了这个问题。

如果需要更多Token相关信息

如果你还需要过期时间、刷新Token等信息,可以通过以下方式获取:

  • 刷新Token:直接使用response.user.refreshToken(这是公开可访问的属性)
  • Token过期时间:getIdToken()返回的Token本身包含过期信息,你可以解码JWT获取,或者用getIdTokenResult()方法拿到更详细的元数据:
response.user.getIdTokenResult()
  .then((idTokenResult) => {
    console.log("Token过期时间:", idTokenResult.expirationTime);
    console.log("完整Token信息:", idTokenResult);
  });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:39:41