При отправке запроса Axios в Firebase Auth REST API возникает ошибка 400 - PullRequest
0 голосов
/ 19 октября 2019

У меня есть экземпляр Axios:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://identitytoolkit.googleapis.com/v1'
});

export default instance;

Затем я импортирую его в мой файл signup.vue:

<script>
  import axios from '../../axios-auth';
  ...
</script>

В этом файле Vue у меня есть форма регистрации, котораязапускает следующий метод после нажатия кнопки «Отправить»:

onSubmit() {
        const formData = {
          email: this.email,
          age: this.age,
          password: this.password,
          confirmPassword: this.confirmPassword,
          country: this.country,
          hobbies: this.hobbyInputs.map(hobby => hobby.value),
          terms: this.terms
        };
        console.log(formData);
        axios.post('/accounts:signUp?key=my_key_goes_here', {
          email: formData.email,
          password: formData.password,
          returnSecureToken: true
        })
          .then(res => {
            console.info(res);
          })
          .catch(error => {
            console.error(error);
          });
      }

Я получаю ошибку 403 - запрещено * Ошибка 1011 * 400 - неверный запрос.

Я пыталсяизменить заголовки:

instance.defaults.headers.post["Access-Control-Allow-Origin"] = "localhost";
instance.defaults.headers.common["Content-Type"] = "application/json";

Но это не помогло.

Я работаю с localhost и увидел, что localhost разрешен по умолчанию. Я также пытался добавить 127.0.0.1 в список, но это также не помогло.

Что мне не хватает? Как я могу заставить этот запрос работать?

1 Ответ

2 голосов
/ 19 октября 2019

Если вы получаете ошибку 400, это может быть потому, что вы получаете ошибку от самого API :

Распространенные коды ошибок

EMAIL_EXISTS: адрес электронной почты уже используется другой учетной записью.

OPERATION_NOT_ALLOWED: вход в систему пароля отключен для этого проекта.

TOO_MANY_ATTEMPTS_TRY_LATER: мы заблокировали все запросы с этого устройства из-зак необычной активности. Повторите попытку позже.

На самом деле эти ошибки возвращают код состояния HTTP, равный 400.

Точное ответное сообщение (например, EMAIL_EXISTS) можно увидеть, выполнивследующие с axios:

    axios.post('/accounts:signUp?key=my_key_goes_here', {
      email: formData.email,
      password: formData.password,
      returnSecureToken: true
    })
      .then(res => {
        console.info(res);
      })
    .catch(error => {
      if (error.response) {
        // The request was made and the server responded with a status code
        // that falls out of the range of 2xx
        console.log(error.response.data);
      } else if (error.request) {
        console.log(error.request);
      } else {
        console.log("Error", error.message);
      }

    });

См. https://github.com/axios/axios#handling-errors

...