【问题标题】:firebase.auth().currentUser is null at page loadfirebase.auth().currentUser 在页面加载时为空
【发布时间】:2021-09-16 11:19:43
【问题描述】:

我使用 onAuthStateChange 观察者成功检查了用户的身份验证状态,并将用户重定向到个人资料页面。但是,我已经想在个人资料上显示一些特定于用户的数据(例如描述)。为此,我需要初始化和填充 currentUser 对象,这需要一些时间(我需要从那里获取 uid 以从 firestore 获取一些数据)。因此,我正在寻找某种方法来等待此过程成功完成。我正在尝试在配置文件页面上使用 async/await 语法,但返回的结果为 null。

目前,当我想将数据获取到下一页时,我正在使用本地存储。

使用 async/await 语法等待 currentUser 对象加载的最佳方式是什么?我相信原因可能是firebase返回null作为第一个结果,然后更正uid - 在加载了一些身份验证功能之后。

【问题讨论】:

  • 请分享您认为没有按预期工作的代码

标签: javascript async-await firebase-authentication


【解决方案1】:

您所描述的是按预期工作。如果您希望代码仅在用户的登录状态恢复后运行,则它需要位于身份验证状态更改侦听器中,如getting the currently signed in user 文档中的第一个代码 sn-p 所示:

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User is signed in, see docs for a list of available properties
    // https://firebase.google.com/docs/reference/js/firebase.User
    var uid = user.uid;
    // ? Your code that needs an active user goes here
  } else {
    // User is signed out
    // ...
  }
});

这里无法使用await,因为onAuthStateChanged 不返回承诺,而是在每次用户的身份验证状态更改时触发。

【讨论】:

    猜你喜欢
    • 2017-12-06
    • 2020-08-08
    • 1970-01-01
    • 2020-09-30
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多