我想在这里完成一些相当简单的事情,但结果却有点让人挠头。
显然,我们有方便的onauthstatechange事件,它允许我监听认证状态的变化。因此,当用户登录或退出时,很容易被通知。
问题是,在初始应用程序加载期间,似乎没有可靠的方法来判断用户是否根本没有登录,或者登录是否正在后台处理。
例如,如果用户有一个存储会话(从上次登录),并返回,最初onauthstatechange将返回null,然后再次触发它并返回用户。
如果用户没有登录,它将返回null,然后什么也不做。
问题是我不能真正分辨第一个null是告诉我用户根本没有登录还是用户还没有登录因为它正在后台处理
我想要一种方法,我可以确定的方式。
如果用户有一个存储会话(从上次登录),并返回,最初
onAuthStateChanged
将返回null,然后再次触发并返回用户。
尽管我也认为这是onAuthStateChanged
工作了很长一段时间,这实际上不是它是如何工作的。
SDK只会在确定初始身份验证状态后调用onAuthStateChanged
侦听器。因此,如果有本地持久的凭据,它将不会调用onAuthStateChanged
侦听器,直到它恢复了这些凭据,或者直到它无法恢复这些凭据。
当SDK试图恢复持久的凭据时,currentUser
将是null
,这就是为什么响应认证状态侦听器比到处读取currentUser
更好的原因之一。
如果你看到一个不同的行为,请编辑你的问题,以显示我们可以重现该行为的最小步骤。