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
相关产品推荐
相关产品推荐

