如何知道Firebase Auth当前是否正在检索用户?

时间:2019-05-03 10:29:07

标签: firebase firebase-authentication

背景

我正在使用GoogleAuthProvider,并具有默认的LOCAL持久性。

当我导航到页面时,我会做:

firebase.initializeApp(firebaseConfig)
firebase.auth().currentUser // this is always null
firebase.auth().onAuthStateChanged(user => {
  console.log("authStateChanged", user)
})

如果用户已登录,则与用户一起调用一次回调。

如果用户未登录 ,则也会使用null调用一次回调。

这建议我可以等到导航到页面后的第一个回调以获取真实的登录状态,然后再决定要显示的视图。 (我本来以为null不会调用它,所以我可以无限期地等待)

问题

会惯用吗?似乎对Firebase更新具有强大的抵抗力吗?在哪里可以找到官方文档中讨论的内容?

2 个答案:

答案 0 :(得分:0)

onAuthStateChanged回调中处理用户身份验证状态的路由是很习惯的。试试看,如果遇到问题,请报告。

答案 1 :(得分:0)

看着类似Pattern for firebase onAuthStateChanged & Navigation Guards - Quasar app这样的问题,看来这确实是完成的方式。

所以我想出了以下方法来区分初始条件:

export const isReady = new Promise(resolve => {
  const unsubscribe = firebase.auth().onAuthStateChanged(() => {
    resolve()
    unsubscribe()
  })
})

我从包装了Firebase的模块中导出了此Promise,因此我可以在等待授权身份验证状态时开始其他初始化。