Вход в Firebase — проверьте, используется ли электронная почта

#javascript #firebase #firebase-authentication

#javascript #firebase #firebase-аутентификация

Вопрос:

Я застрял в этой проблеме. Когда я пытаюсь ввести тот же адрес электронной почты и другой пароль для страницы регистрации, которую я создаю, я не получаю сообщение об ошибке «использовалось то же электронное письмо», но когда я использую тот же адрес электронной почты и пароль, тогда он говорит, что используется электронная почта. Как мне сделать так, чтобы в нем было указано, что электронная почта используется, даже если пароль другой?

Спасибо

Вот мой код:

 function signUp(email,password){
  //Check if email adress registerd then password security
  firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error){
    var errorCode = error.code;
    console.log(error.message, errorCode)
    if(errorCode == "auth/weak-password"){
      alert("Password too weak")
    }
    else if(errorCode == "auth/email-already-in-use"){
      alert("Email in use aldready")
    }
    else{
      //If succsess
      firebase.auth().sendSignInLinkToEmail(email, actionCodeSettings).then(() => {
        window.localStorage.setItem('emailForSignIn', email);
      }).catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
      });
    }
  })
}
 

Редактировать:
Я попытался использовать метод выборки, но я все еще сталкиваюсь с той же проблемой

 function signUp(email,password){
  //Check if email adress registerd then password security
  firebase.auth().fetchSignInMethodsForEmail(email)
    .then((signInMethods) => {
      if (signInMethods.length) {
        alert("Aldready signed up with this email")
      } else {
        // User does not exist. Ask user to sign up.
      }
    })
    .catch((error) => {
      // Some error occurred.
    });
}
 

Комментарии:

1. Обратите внимание, что вы фактически управляете случаем «is success» в catch() блоке. Вы должны сделать это в then() блоке.

2. Не могли бы вы показать мне, как бы вы написали код. Я новичок в Firebase. Спасибо

3. Просто поступайте так, как вы поступаете с этим fetchSignInMethodsForEmail() методом, используя then() , см. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…

4. Это не то, что я уже делаю. Простите меня за мое невежество

5. Нет, это не так. Блок catch отличается от блока then . Я бы любезно предложил вам прочитать документ об этом, см. Ссылку выше.

Ответ №1:

Чтобы определить, используется ли электронное письмо, не вызывайте createUserWithEmailAndPassword , а вместо этого вызывайте fetchSignInMethodsForEmail .