我正在尝试获取网站当前登录用户的 token 。但是,javascript无法为我带来值(value)。我认为这里有2个问题:

  • 当我在开始时获取Auth.currentUser时,出现以下错误:“TypeError:无法读取null的属性'getToken'。但是,当我在控制台中键入Auth.currentUser.getToken()时,实际上会显示带有 token 的对象。
  • getToken()返回给我的是一个 promise 对象,其键“ea”包含 token 的值。但是当我执行Auth.currentUser.getToken()。ea时,它使我为“null”。如何直接从对象检索 token ?

  • 谢谢!

    我的检索 token 的代码:
    var Auth = firebase.auth()
    var token = Auth.currentUser.getToken()
    

    此屏幕快照可能会有所帮助:
    javascript - Firebase getToken()TypeError:无法读取属性-LMLPHP

    最佳答案

    根据documentation of firebase.User:getIdToken() :

    该方法返回一个promise,因为如果 token 过期,它可能需要往返Firebase服务器:

    Auth.currentUser.getIdToken().then(data => console.log(data))
    
    或更经典的JavaScript:
    Auth.currentUser.getIdToken().then(function(data) {
        console.log(data)
    });
    
    日志输出:

    更新:要确保用户在获取 token 之前已登录,请在 onAuthStateChanged listener中运行以上代码:
    firebase.auth().onAuthStateChanged(function(user) {
      if (user) {
        user.getIdToken().then(function(data) {
          console.log(data)
        });
      }
    });
    

    10-02 02:59