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

时间:2020-08-16 06:59:52

标签: javascript reactjs firebase react-native firebase-authentication

因此,如果用户登录到您的应用,则可以通过以下方式进行检查

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如果电子邮件已验证也不会更新,该怎么办?

2 个答案:

答案 0 :(得分:0)

据我了解您的问题,我想给您一个想法。
我认为extension_dir = "ext"仅在您的身份验证状态更改(登录,注销)时触发,而在用户属性更改时不会触发。
正如他们在documentation中提到的那样,

添加观察者以更改用户的登录状态。之前 4.0.0,这会在用户登录,注销或在诸如令牌之类的情况下更改用户的ID令牌时触发观察者 到期或密码更改。在4.0.0之后,仅触发观察者 登录或退出。

onAuthStateChanged()

因此,您必须通过定义上述函数来手动检查它,并且当用户单击按钮

时可以调用此函数。

答案 1 :(得分:0)

如果您使用的是react-native-firebase(强烈推荐,因为它支持最新的Firebase功能),则可以按照this doc

的说明收听用户更改

来自文档

添加一个侦听器以观察对User对象的更改。这是auth#onAuthStateChangedauth#onIdTokenChanged和用户更改中所有内容的超集。此方法的目的是提供更轻松的方法来监听所有用户更改,例如在链接和取消链接凭据时,而无需手动调用User#reload

onUserChanged(listener: AuthListenerCallback): () => void;