#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
.