How to observe firebase.auth().currentUser.displayName and other attributes for changes?

时间:2017-05-16 09:17:49

标签: firebase firebase-authentication vuex

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!

2 个答案:

答案 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编写数据库写入触发器,可以在编写配置文件数据时检查是否有任何实际更改,并根据需要在此处执行操作。