Firebase用户';Javascript中的详细信息更改侦听器

Firebase用户';Javascript中的详细信息更改侦听器,javascript,reactjs,firebase,react-native,firebase-authentication,Javascript,Reactjs,Firebase,React Native,Firebase Authentication,因此,如果用户登录到你的应用程序,你可以通过 firebase.auth().onAuthStateChanged((user)=>{}); 但是,如果用户已经登录,并且其用户的属性发生了更改,您怎么看 在我的例子中,我让用户验证他的电子邮件地址,完成后,他应该能够在验证电子邮件后立即看到应用程序上的更改。所以我使用react native,这是一个包含ES6语法的javascript,我正在做一个firebase.auth().onAuthStateChanged()但它不工作,我甚至

因此,如果用户登录到你的应用程序,你可以通过

firebase.auth().onAuthStateChanged((user)=>{});
但是,如果用户已经登录,并且其用户的属性发生了更改,您怎么看

在我的例子中,我让用户验证他的电子邮件地址,完成后,他应该能够在验证电子邮件后立即看到应用程序上的更改。所以我使用react native,这是一个包含ES6语法的javascript,我正在做一个
firebase.auth().onAuthStateChanged()但它不工作,我甚至在屏幕上有一个按钮,检查是否验证如下:

if (!firebase.auth().currentUser.emailVerified) { firebase.auth().currentUser.sendEmailVerification(); }
else if (firebase.auth().currentUser.emailVerified) { this.setState({ showVerifier: false }); }

但即使这样也不起作用,就好像电子邮件验证后,
firebase.auth().currentUser
不会更新一样,这里可以做什么?

据我理解你的问题,我想给你一个想法
我认为只有当您的身份验证状态更改(登录、注销)时才会触发
onAuthStateChanged()
,而不是当用户属性更改时
正如他们在报告中提到的,

添加用户登录状态更改的观察者。之前 在4.0.0中,当用户登录、注销或用户的ID令牌在令牌等情况下发生更改时,这会触发观察者 过期或密码更改。4.0.0之后,仅触发观察者 正在登录或注销


因此,您必须通过定义如上所述的函数来手动检查它,并且当用户单击按钮时,您可以调用此函数。如果您使用的是
react native firebase
(强烈推荐,因为它支持最新的firebase功能),您可以按照中的说明监听用户更改

从医生那里

添加侦听器以观察用户对象的更改。这是从
auth#onAuthStateChanged
auth#onidtokechanged
和用户更改的所有内容的超集。此方法的目标是更方便地侦听所有用户更改,例如在链接和取消链接凭据时,无需手动调用
user\reload


它不工作,现有用户的状态不变。其user.emailVerified即使在调用
firebase.auth().currentUser
后也不会更改。在我的问题中,我也做了同样的事情,你只是用vars以一种更为扩展的方式编写了它,我尝试了,同样的事情,但它不起作用。
react native firebase
firebase的包装器对吗?因此,如果实际firebase的侦听器在电子邮件验证时没有更新,
react本机firebase
侦听器会捕获它吗?这并没有什么意义,但正如文档中提到的,它不仅仅是
onAuthStateChanged
方法
firebase
的包装。你在用哪个图书馆?您是否尝试过实现上述方法?
function isVerified(){
   var user = firebase.auth().currentUser;
   if(user != null){
       var status = user.emailVerified;
       if(status)
       {
          // Verified
       }else{
          // Not Verified
       }
   }
   else{
       // User didn't login!
   } 
}
onUserChanged(listener: AuthListenerCallback): () => void;