Firebase SignInWiteMailAndPassword всегда возвращает «неверные учетные данные» вместо конкретных ошибокJavascript

Форум по Javascript
Ответить
Anonymous
 Firebase SignInWiteMailAndPassword всегда возвращает «неверные учетные данные» вместо конкретных ошибок

Сообщение Anonymous »

Я внедряю вход в систему с аутентификацией Firebase (React + Firebase). < /p>
Вот поток:
Если пользователь входит в недопустимое электронное письмо или пароль, я хочу показать правильное сообщение об ошибке.
Если пользователь не существует, я хочу показать «нет учетной записи». /> Но сейчас Firebase всегда дает мне одинаковое сообщение об ошибке: «Неверные учетные данные». < /p>
Вот код < /p>
import {
Sun,
Moon,
Lock,
Eye,
EyeOff,
Mail,
Chrome,
} from "lucide-react";

import { Link, useNavigate } from "react-router-dom";
import { getAuth, GoogleAuthProvider, signInWithEmailAndPassword, signInWithPopup } from 'firebase/auth'
import { firebase } from "./Firebase";
import { useContext, useEffect, useState } from "react";
import { ThemeContext } from "./Theme";

export const Login = () => {

const [showPassword, setShowPassword] = useState(false);
const [user, setUser] = useState([])
const [isLoading, setIsLoading] = useState(false);
const [formData, setForData] = useState({
email: '',
password: ''
})

const [error, setError] = useState({
email: '',
password: ''
})

const [check, setCheck] = useState({
email: false,
password: false
})

const { theme, setTheme } = useContext(ThemeContext)
const navigate = useNavigate()

// handle Form Data
function handleFormData(e) {
const { name, value } = e.target;

setForData((prev) => ({ ...prev, [name]: value }));

// email validation
const emailIDRegex = /^[a-zA-Z0-9-+._]+@[a-zA-Z0-9+-]+\.[a-zA-Z]{2,}$/;
if (name == 'email') {
if (value.trim() == '') {
setError((prev) => ({ ...prev, email: "Enter Email id" }));
setCheck((prev) => ({ ...prev, email: false }));
}
else if (!emailIDRegex.test(value.trim())) {
setError((prev) => ({ ...prev, email: "Invalid Email id" }));
setCheck((prev) => ({ ...prev, email: false }));
}
else {
setError((prev) => ({ ...prev, email: "" }));
setCheck((prev) => ({ ...prev, email: true }));
}
}

// password validation
if (name == 'password') {
if (value.trim() == '') {
setError((prev) => ({ ...prev, password: "Enter password" }));
setCheck((prev) => ({ ...prev, password: false }));
}
else if (value.length < 6) {
setError((prev) => ({ ...prev, password: "Password must be at least 6 characters" }));
setCheck((prev) => ({ ...prev, password: false }));
}
else {
setError((prev) => ({ ...prev, password: "" }));
setCheck((prev) => ({ ...prev, password: true }));
}
}
}

// Google Sign In
function handleGoogleSignIn() {
setIsLoading(true);
const auth = getAuth(firebase);
const provider = new GoogleAuthProvider
signInWithPopup(auth, provider)
.then((res) => {
console.log(res);
setUser(res.user)
})
.catch((error) => {
console.log(error)
})
.finally(() => {
setIsLoading(false);
})
}

function handleFormSubmit(e) {
e.preventDefault();
const allValid = Object.entries(check).every((v) => v[1] == true)
if (!allValid) {
Object.entries(check).forEach((v) => {
if (v[1] == false) {
const inputName = v[0];
setError((prev) => ({ ...prev, [inputName]: `Enter your ${inputName}` }));
setCheck((prev) => ({ ...prev, [inputName]: false }));
}
})
return;
}
else {
setIsLoading(true);
const auth = getAuth(firebase)
signInWithEmailAndPassword(auth, formData.email, formData.password)
.then((userdata) => {
console.log(userdata.user);
})
.catch((error) => {
console.log("Firebase Error:", error.code, error.message);

if (error.code === "auth/user-not-found") {
setError((prev) => ({ ...prev, email: "No account found with this email." }));
}
else if (error.code === "auth/wrong-password") {
setError((prev) => ({ ...prev, password: "Incorrect password." }));
}
else if (error.code === "auth/invalid-email") {
setError((prev) => ({ ...prev, email: "Invalid email format." }));
}
else {
alert("Something went wrong: " + error.message);
}
})
.finally(() => {
setIsLoading(false);
})
}
}

useEffect(() => {
localStorage.setItem('UserData', JSON.stringify(user))
}, [user])

return (



{/* Header */}







setTheme(theme == 'dark' ? 'light' : 'dark')}>
{theme == 'dark' ? : }


Welcome Back


Sign in to your account



{/* Google Sign In */}
onClick={handleGoogleSignIn}
disabled={isLoading}
className={`group relative w-full flex justify-center items-center py-3 px-4 border border-transparent rounded-lg text-sm font-medium transition-all duration-200 cursor-pointer
${theme === 'dark'
? 'bg-gray-700 text-white hover:bg-gray-600 border-gray-600'
: 'bg-white text-gray-700 hover:bg-gray-50 border-gray-300 shadow-sm'
} ${isLoading ? 'opacity-50 cursor-not-allowed' : 'hover:shadow-md'}`}
>

{isLoading ? 'Signing in...' : 'Continue with Google'}

{/* Divider */}






Or continue with email






{/* Email Input */}


Email Address







{error.email && (

{error.email}

)}


{/* Password Input */}


Password






setShowPassword(!showPassword)}
className="absolute inset-y-0 right-0 pr-3 flex items-center"
>
{showPassword ? (

) : (

)}


{error.password && (

{error.password}

)}


{/* Submit Button */}

{isLoading ? (


Signing in...

) : (
'Sign In'
)}



{/* Footer */}

Don't have an account?{" "}

Create account




);
};
< /code>
Когда я пытаюсь:
электронное письмо, которое не существует
или неправильный пароль
👉 Оба случая показывают одинаковую общую ошибку вместо конкретной. < /p>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ls-instead
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»