从 Firebase Auth REST 获得 400 响应 API

Getting 400 response from Firebase Auth REST API

我正在学习 React 并试图了解如何使用 Firebase 进行注册。只是找不到我做错了什么。谢谢大家的帮助。我正在使用来自此处的请求 link: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, 
…}

谢谢。

  • 我认为这里的错误是这封电子邮件已经存在,因为您对其进行了硬编码,因此它只会在第一次尝试时成功,然后它就会已经存在,您应该检查响应状态是否给您错误。

在 firebase 中使用电子邮件和密码注册时可能会遇到三种类型的错误

  • 第一封邮件已经存在
  • 第二个是TOO_MANY_ATTEMPTS_TRY_LATER
  • 第三个是WEAK_PASSWORD:密码至少要有6个字符, 最好在之前至少检查 6 个字符的密码 将它发送到 API 这样您就可以始终避免第三个错误。

- 顺便说一下,当您使用 async/await 时,您不需要在这里使用 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 && data.error.message === "EMAIL_EXISTS"){
            console.log('this email is already exist')
          } else if(!respnose.ok&data.error.message ==="TOO_MANY_ATTEMPTS_TRY_LATER"){
            alert('TOO_MANY_ATTEMPTS_TRY_LATER')
          }
    
        };
    
        try {
          const respnseStatus = await sendSignInRequest();
  
        } catch (error) {
          console.log(error);
        }
}
};