javascript - Firebase getToken() 类型错误 : Cannot read property

标签 javascript firebase firebase-authentication

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

  1. 当我开始获取 Auth.currentUser 时,出现“TypeError:无法读取 null 属性‘getToken’”的错误。但是,当我在控制台中键入 Auth.currentUser.getToken() 时,实际上会显示带有 token 的对象。

  2. getToken() 返回给我的是一个 promise 对象,其键“ea”包含 token 的值。但是当我执行 Auth.currentUser.getToken().ea 时,它让我变得“空”。如何直接从对象中检索 token ?

谢谢!

我获取 token 的代码:

var Auth = firebase.auth()
var token = Auth.currentUser.getToken()

此屏幕截图可能会有所帮助: Chrome console result

最佳答案

根据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.

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

Auth.currentUser.getIdToken().then(data => console.log(data))

或者在更经典的 JavaScript 中:

Auth.currentUser.getIdToken().then(function(data) {
    console.log(data)
});

日志输出:

ey...biPA

更新:为确保用户在获取 token 之前已登录,请在 onAuthStateChanged listener 中运行上述代码:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    user.getIdToken().then(function(data) {
      console.log(data)
    });
  }
});

关于javascript - Firebase getToken() 类型错误 : Cannot read property,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37934898/

相关文章:

firebase - 将付款与适用于 Android 和 iOS 的 Firebase 集成

objective-c - 如何从 objective-c 中的 Firebase Auth 中删除 "Sign In with Email"

javascript - 在哪里放置代码以在 Vue.js 中设置 Firebase 身份验证状态持久性?

Firebase 3.0 + Ember 2.0 : The Torii adapter must implement `open` for a session to be opened

javascript - 根据单击该行中的按钮突出显示或删除该行

javascript - React - Selenium 测试

javascript - "Data-linked elements"上的困惑

swift - 线程跳过数据库 DataSnapshot (FireBase)

java - 错误 : Failed to resolve: com. google.firebase :firebase-core:18. 1.0 在项目结构对话框中显示受影响的模块:app

javascript - 使用 JavaScript 使用 JSON 填充 HTML