I am using firebase auth and when users change their profile, such as their displayName
, photoURL
, or email
etc. the onAuthStateChanged
callback won't be fired, but the underlying firebase.auth().currentUser
gets updated automatically.
I need to update the UI after the user updates their profile, ie. I would like to keep firebase.auth().currentUser
in sync with the client store (specifically vuex
or redux
-like store).
Is there a way to observe firebase.auth().currentUser
for changes, or any other hooks I can use to get notified when firebase.auth().currentUser
changes?
Thanks!
答案 0 :(得分:2)
我遇到同样的问题,我正在使用反应,并希望看到一个组件从Send verification Email
更改为Email Verified
。我所做的就是创建一个将reload
方法包装在用户实例上的函数。这是一个承诺,所以当承诺履行时,我现在调用firebase.auth().currentUser
函数,现在获取重新加载的更新原因。我将所有这些与一些组件生命周期等相匹配。
const user = firebase.auth().currentUser;
user.reload().then(() => {
const refreshUser = firebase.auth().currentUser;
// do your stuff here
})
重新加载的文档就在那里。 https://firebase.google.com/docs/reference/js/firebase.User#reload
希望可以提供帮助:)
答案 1 :(得分:1)
Firebase身份验证用户个人资料更改时没有任何回调。典型的模式是每次在客户端应用程序中触发身份验证侦听器时,将用户配置文件数据写入数据存储(例如实时数据库)。然后,客户端可以监听每个用户的个人资料数据所在的位置,并自行对这些更改做出反应。此外,您可以使用Cloud Functions for Firebase编写数据库写入触发器,可以在编写配置文件数据时检查是否有任何实际更改,并根据需要在此处执行操作。