我整天试图解决该问题,但无法解决。我很生气,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上进行测试,链接链接到实时网站。
请帮助:(
答案 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
,它会告诉您用户无法通过身份验证的原因。