Ok so im making a blog which requires users to login through firebase. To post comments, their email has to be verified
I know how to verify the email, and i did so with my test account. When i typed into the console
firebase.auth().currentUser.emailVerified
it returned true, so yes my email was verified.
But the comment .validate
rule requires the user to be validated, like so:
auth.token.email_verified === true
However it wasn't working, so i removed it and it began to work again
After a bit of reading, I realized that i had to
const credentials = firebase.auth.EmailAuthProvider.credential(
user.email, password);
user.reauthenticateWithCredential(credentials)
.then(() => { /* ... */ });
And that makes it work perfectly. The explanation was it apparantly takes the firebase server some time to update its backend validation, but reauthenticating forces the update immediately.
However, I am stumped on how to ask the user to reauthenticate themselves, as i have the following problem
How do I know when the users is validated (firebase.auth().currentUser.emailValidated
), and at the same time the firebase backend is not updated (auth.token.email_verified === true
is false) so that i can update my UI and prompt the user to reauthenticate
Basically how can i know when auth.token.email_verified === true
is not updated yet on the client side
edit also is there a client side solution without reauthentication that updates the backend validation?
edit I tried user.reload().then(() => window.location.replace('/'))
but it didnt work
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…