将Firebase身份验证集成到我的应用程序中。一切似乎都很好,直到我注意到我打开应用程序的问题,它向我显示登录屏幕,即使已经有用户登录。
退出应用程序并再次启动它解决了这个问题(应用程序不再要求用户再次登录),尽管它为用户提供了非常糟糕的体验。
我已经阅读了文档,很明显,如果auth没有完成初始化,调用FirebaseAuth.getInstance().getCurrentUser()
可能会返回null。我假设这就是问题发生的原因。所以我想知道是否有一种方法可以等待FirebaseAuth完成初始化,然后才能调用getCurrentUser()?
7条答案
按热度按时间pxy2qtax1#
使用现代API,只需等待auth状态更改:
o2g1uqev2#
你可以创建一个返回promise的函数,并在需要的地方等待:
检查这个-https://github.com/firebase/firebase-js-sdk/issues/462
bwleehnv3#
对于问同样问题的React用户:
react-firebase-hooks有一个名为
useAuthState
的钩子,可以证明它有助于检查firebase auth的状态。下面是一个我认为非常常见的用例。k7fdbhmy4#
无法相信我必须这样做(因为没有官方的API由谷歌)。我必须使用一个额外的布尔值...
mwngjboj5#
您需要一个侦听器来告诉您身份验证何时完成,此链接可能会帮助您:FirebaseAuth.AuthStateListener
ibps3vxo6#
您可以调用getCurrentUser()来了解此时此刻是否知道用户已登录。如果需要在用户登录或注销时触发一些代码,则需要注册一个侦听器,以便在发生更改时得到通知。有一个方法addAuthStatement()将在该更改时触发。一定要阅读javadoc,以准确理解它将在什么情况下触发。在您添加的AuthStateListener旁边,您将能够调用getCurrentUser()来了解用户是否登录。
t98cgbkg7#
现在我们有
Auth.authStateReady()
用于JShttps://firebase.google.com/docs/reference/js/auth.auth.md#authauthstateready
不确定Java等价物