# #reactjs #redux #react-redux #firebase-authentication
Вопрос:
Я учусь реагировать и пытаюсь понять, как зарегистрироваться в Firebase. Просто не могу понять, что я делаю не так. Спасибо всем вам за любую помощь. Я использую ссылку для запроса отсюда: https://firebase.google.com/docs/reference/rest/auth?hl=cs
Вот код моего запроса:
export const signInUser = () => {
return async (dispatch) => {
const sendSignInRequest = async () => {
const response = await fetch(
"https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=AIzaSyDkDPtv28NKNnAxKYN_RFTG36lp3-IraAE",
{
method: "POST",
body: JSON.stringify({
email: "QWERTY12345@GMAIL.COM",
password: "12345TREWQ!asd",
returnSecureToken: true,
}),
headers: {
"Content-Type": "application/json",
},
}
).then((res) => {
console.log(res);
return res;
});
return response;
};
try {
const respnseStatus = await sendSignInRequest();
} catch (error) {
console.log(error);
}
};
};
это то, что я получаю от сервера:
Response {
type: 'cors',
url: 'https://identitytoolkit.googleapis.com/v1/accounts…ignUp?key=AIzaSyDkDPtv28NKNnAxKYN_RFTG36lp3-IraAE',
redirected: false,
status: 400,
ok: false,
…}
Спасибо.
Ответ №1:
- Я думаю, что ошибка здесь в том, что это электронное письмо уже существует, потому что вы его жестко закодировали, чтобы оно было успешным только с первой попытки, а затем оно уже будет существовать, вы должны проверить, что, если статус ответа выдаст вам ошибку .
существует три типа ошибок, с которыми вы, возможно, столкнетесь при регистрации с помощью электронной почты и пароля в firebase
- первая электронная почта уже существует
- и второе-это TOO_MANY_ATTEMPTS_TRY_LATER
- и третье-WEAK_PASSWORD : пароль должен состоять не менее чем из 6 символов, предпочтительно проверять этот пароль не менее чем из 6 символов перед отправкой его в API, чтобы вы всегда избегали третьей ошибки.
-и, кстати, вам не нужно использовать then здесь, пока вы используете асинхронность/ожидание, поэтому ваш код будет таким
export const signInUser = (email,password) => {
return async (dispatch) => {
const sendSignInRequest = async () => {
const response = await fetch(
"https://identitytoolkit.googleapis.com/v1/accounts:signUp?key=AIzaSyDkDPtv28NKNnAxKYN_RFTG36lp3-IraAE",
{
method: "POST",
body: JSON.stringify({
email: email
password: password
returnSecureToken: true,
}),
headers: {
"Content-Type": "application/json",
},
}
)
const data = await response.JSON();
if (response.ok) {
dispatch({type:'SIGN-UP'})
} else if (!respnose.ok amp;amp; data.error.message === "EMAIL_EXISTS"){
console.log('this email is already exist')
} else if(!respnose.okamp;data.error.message ==="TOO_MANY_ATTEMPTS_TRY_LATER"){
alert('TOO_MANY_ATTEMPTS_TRY_LATER')
}
};
try {
const respnseStatus = await sendSignInRequest();
} catch (error) {
console.log(error);
}
}
};