Как узнать, проверен ли регистрационный адрес электронной почты в Firebase?

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;
  })
}
}

В Firebase я установил SendEmailVerfication, как в приведенном выше коде, и электронное письмо могло нормально отправляться. Однако в моем приложении нет никакой разницы между пользователем, который не нажимает на подтверждающее электронное письмо, и теми, кто нажал, как сделать разницу?


person pyy    schedule 01.04.2017    source источник


Ответы (4)


Согласно документации, объект User содержит emailVerified.

Таким образом, пользователь, которому разрешается обещание метода signInWithEmailAndPassword, - или пользователь, который передается обратному вызову метода onAuthStateChanged - можно проверить и проверить значение emailVerified.

person cartant    schedule 02.04.2017

Вы можете использовать firebase.auth().currentUser.emailVerified

Это вернет true или false.

person Yohan E    schedule 18.06.2018

- Если вы уже вошли в систему, приведенные ниже решения могут помочь вам проверить статус подтверждения электронной почты.

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')
       }
    })

2) Вы также можете получить текущего пользователя, вошедшего в систему, используя свойство currentUser.

var user = firebase.auth().currentUser;

if (user.emailVerified) {
  // email is verified.
} else {
  // email is not verified.
}

- Если вы не вошли в систему, попробуйте следующее решение.

     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) {

    });
person Maheshvirus    schedule 21.04.2020

вы можете добавить атрибут в базу данных firebase для проверки состояния вашего пользователя ссылка

person Oussema Aroua    schedule 01.04.2017