#reactjs #firebase #google-cloud-firestore #firebase-authentication #redux-firestore
#reactjs #firebase #google-облако-firestore #firebase-аутентификация #redux-firestore
Вопрос:
Я не понимаю, почему у меня эта ошибка:
auth.js:204 POST https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=AIzaSyApbrATkWmIfa0wkxIC9105e4K46ytzI4g 400
Это происходит, когда, например, я ввожу правильный адрес электронной почты и неправильный пароль при входе в систему или когда я регистрирую нового пользователя по электронной почте, которая уже используется.
import firebase from 'firebase/app'
import { IUser } from '../models/user'
import { authTypes } from '../store/reducers/authReducer'
export function signIn(
credentials: IUser
): (dispatch: Function, getState: object) => void {
return (dispatch: Function, getState: object) => {
firebase
.auth()
.signInWithEmailAndPassword(credentials.email, credentials.password)
.then((res) => {
console.log(res)
dispatch({ type: authTypes.LOGIN })
})
.catch((err): any => {
dispatch({ type: authTypes.LOGIN_ERR, payload: err.message })
})
}
}
export function signUp(
newUser: IUser
): (
dispatch: Function,
getState: object,
{ getFirestore }: { getFirestore: any }
) => void {
return (
dispatch: Function,
getState: object,
{ getFirestore }: { getFirestore: any }
) => {
const firestore = getFirestore()
firebase
.auth()
.createUserWithEmailAndPassword(newUser.email, newUser.password)
.then(res => {
return firestore.collection('users').doc(res?.user?.uid).set({
firstName: newUser.firstName,
lastName: newUser.lastName,
})
}).catch((err): any => {
dispatch({ type: authTypes.SIN_UP_ERR, payload: err.message })
})
}
}
export function signOut(): (dispatch: Function, getState: object) => void {
return (dispatch: Function, getState: object) => {
firebase
.auth()
.signOut()
.then(() => {
console.log()
})
}
}
И вот правила, установленные на моей firebase:
Также для примера я привожу часть компонента Login:
const Login = () => {
const auth = useSelector((state: RootState) => state.firebase.auth)
const authP = useSelector((state: RootState) => state.auth.authErrorLogin)
const history = useHistory()
const dispatch = useDispatch()
const { handleSubmit, handleChange, state, errors } = useForm(
submit,
validateFormRegister2
)
function submit() {
dispatch(signIn(state as IUser))
history.push('/')
}
***
Комментарии:
1. похоже, вы спрашиваете, почему firebase возвращает ошибку, когда пользователь вводит неверный пароль или пытается создать пользователя с уже использованным электронным письмом — все это звучит точно так, как это должно работать для меня. Или я пропустил вопрос?
2. Я перехватываю ошибки (см. Указанный код), но эта ошибка все еще отображается.
3. похоже, что когда вы получаете сообщение об ошибке от firebase, вы отправляете его в Redux (или какой-либо другой редуктор), и я полагаю, что ваш компонент входа в систему отображает ошибки из этого редуктора, но у вас нет общего доступа к этому коду.