重新加载当前用户不会刷新Firebase身份验证中的emailVerified状态

时间:2018-08-19 06:28:49

标签: javascript firebase firebase-authentication

我整天试图解决该问题,但无法解决。我很生气,firebase文档太乱了,太疯狂了。

因此,我正在尝试在我的React应用程序上实施电子邮件验证。我与文档无关,Google确实发送了电子邮件,我可以单击它,一切都很好。 但是,通过电子邮件验证的状态根本没有改变,相信我已经经历了所有stackoverflow主题。

firebase.auth().doSignInWithEmailAndPassword(email, password)
        .then(() => {
            console.log(firebase.auth().currentUser);
            firebase.auth().currentUser.reload()
                .then(() => {
                    console.log(firebase.auth().currentUser);
                })
        })

因此,我发现我需要重新加载用户才能查看所应用的更改,无论他们做什么我都无法使用。 两个控制台日志始终返回email.verified = false。 我绝望,任何人对如何使这项工作有任何想法? 我想知道是否将自定义域设置为验证链接是否与此有关?我正在localhost上进行测试,链接链接到实时网站。 请帮助:(

1 个答案:

答案 0 :(得分:2)

你应该调用的方法是signInWithEmailAndPassword,所以去掉函数调用中的“do”:

firebase.auth().signInWithEmailAndPassword(email, password)
        .then((credential) => {
            const currentUser = credential.user;
            console.log(firebase.auth().currentUser);
            firebase.auth().currentUser.reload()
                .then(() => {
                    console.log(firebase.auth().currentUser);
                })
        }).catch((err) => {console.error("Problem with sign in ", err);}

使用此函数返回的 credential 并将其 user 值赋给 currentUser 以验证用户已通过身份验证。

最后,记得在使用 catch 时在末尾添加 then。在这种情况下,err 将包含一个属性 err.code,它会告诉您用户无法通过身份验证的原因。