如何知道Firebase中是否验证了注册电子邮件?

pyy*_*pyy 6 firebase firebase-authentication angularfire2

onSubmit(formData) {
if(formData.valid) {
  console.log(formData.value);
  this.af.auth.createUser({
    email: formData.value.email,
    password: formData.value.password
  }).then(
    authState => {
    authState.auth.sendEmailVerification();
    this.router.navigate(['/login'])
  }).catch(
    (err) => {
    console.log(err);
    this.error = err;
  })
}
}
Run Code Online (Sandbox Code Playgroud)

在Firebase中,我设置了SendEmailVerfication上面的代码,电子邮件可以正常发送.但是,在我的应用中,没有点击验证电子邮件的用户与点击的用户之间没有区别,如何有所作为?

car*_*ant 13

根据文档,该User对象包含一个emailVerified属性.

因此,可以检查signInWithEmailAndPassword方法的promise所解析的用户 - 或者传递给onAuthStateChanged方法的回调的用户 - 并且可以检查其值emailVerified.


Yoh*_*n E 7

您可以使用 firebase.auth().currentUser.emailVerified

这将返回true或false。


Mah*_*rus 5

- 如果您已经登录,以下解决方案可以帮助您检查电子邮件验证状态。

1)获取当前用户的推荐方法是在 Auth 对象上设置观察者:

 firebase.auth().onAuthStateChanged(authUser => {
      if(authUser.user.emailVerified){ //This will return true or false
        console.log('email is verified')
       }else{
           console.log('email not verified')
       }
    })
Run Code Online (Sandbox Code Playgroud)

2)您还可以使用 currentUser 属性获取当前登录的用户。

var user = firebase.auth().currentUser;

if (user.emailVerified) {
  // email is verified.
} else {
  // email is not verified.
}
Run Code Online (Sandbox Code Playgroud)

- 如果您尚未登录,请尝试以下解决方案。

     firebase.auth().signInWithEmailAndPassword(email, password ).then(authUser => {

      if(authUser.user.emailVerified){ //This will return true or false
       console.log('email is verified')
      }else{
        console.log('email not verified')
      }
      }).catch(function(error) {

    });
Run Code Online (Sandbox Code Playgroud)