我正在尝试获取我当前登录的网站用户的令牌.但是,javascript无法为我获得价值.我认为这里有两个问题:
>当我在启动时收到Auth.currentUser时,我收到“TypeError:无法读取属性’getToken’为null”的错误.但是当我在控制台中键入Auth.currentUser.getToken()时,带有令牌的对象实际显示出来.
> getToken()返回给我的是一个promise对象,其键’ea’包含令牌的值.但是当我做Auth.currentUser.getToken()时,它会让我’空’.如何直接从对象中检索令牌?
谢谢!
我检索令牌的代码:
var Auth = firebase.auth() var token = Auth.currentUser.getToken()
解决方法
根据
documentation of
firebase.User:getIdToken()
:
Returns a JWT token used to identify the user to a Firebase service.
Returns the current token if it has not expired,otherwise this will refresh the token and return a new one.
该方法返回一个承诺,因为如果令牌已过期,它可能需要往返Firebase服务器的往返:
Auth.currentUser.getIdToken().then(data => console.log(data))
或者更经典的JavaScript:
Auth.currentUser.getIdToken().then(function(data) { console.log(data) });
日志输出:
ey…biPA
更新:要确保用户在获取令牌之前已登录,请在onAuthStateChanged
listener中运行以上代码:
firebase.auth().onAuthStateChanged(function(user) { if (user) { user.getIdToken().then(function(data) { console.log(data) }); } });