Запрос информации о пользователе из Spotify Web API приводит к ошибке 401 - PullRequest
0 голосов
/ 13 октября 2018

Я хочу использовать Spotify API для получения информации о пользователе.Я уже понял, чтобы получить access token.Сначала я получаю код авторизации от Spotify и отправляю его в конечную точку, которая генерирует access token, это выглядит так ...

const access = async (req, h) => {

// URL to retrieve an access token.
const spotify_url = "https://accounts.spotify.com/api/token";

// Send authorization code to spotify.
const response = await axios({
  method: "post",
  url: spotify_url,
  params: {
    grant_type: "authorization_code",
    code: req.query.auth_code,
    redirect_uri: process.env.REDIRECT_URI
  },
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": "Basic " + (Buffer.from(process.env.CLIENT_ID + ":" + process.env.CLIENT_SECRET).toString("base64"))
  }
})
.then(response => {

  // Retrieve access and refresh tokens.
  let access_token = response.data.access_token;
  let response_token = response.data.refresh_token

  return {
    access_token: access_token,
    response_token: response_token
  }

})
...
...
return result

Я не добавил весь код, но он отлично работает,Возвращается access token и refresh token.

Я использую Hapi.js, поэтому я помещаю это в обработчик pre и отправляю access token в другой обработчик / функцию, котораязатем использует access token для получения информации о пользователе ...

const user_account = async (access_token) => {

  const user = await axios.get("https://api.spotify.com/v1/me", {
    header: {
      "Authorization": "Bearer " + access_token
    }
  })
  .then(response => {

    // Return the full details of the user.
    return response;

  })
  .catch(err => {
    throw Boom.badRequest(err);
  });

  return user;
}

Проблема в том, что я получаю ошибку 401.

UnhandledPromiseRejectionWarning: Ошибка: запрос не выполнен с кодом состояния 401

Возможно, мой access token может быть недействительным.Это единственное, о чем я могу думать, однако я проверил и отправляю тот же токен, который был сгенерирован первой функцией, поэтому он должен быть действительным.Может быть, неправильный способ форматирования моего запроса.Я не могу понять, в чем причина.

1 Ответ

0 голосов
/ 13 октября 2018

В запросе axios.get возникла небольшая ошибка опечатки.Изменить заголовок на заголовки

Изменить

 header: {
  "Authorization": "Bearer " + access_token
}

На

 headers: {
  "Authorization": "Bearer " + access_token
}
...