Ошибка запроса конечной точки API Spotify - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь сделать запрос на поставку к конечной точке Spotify Web API, используя HttpClient от Angular, но запрос не выполняется, и я не уверен, почему. Посмотрите на следующий код:

let headers = new HttpHeaders().set('Authorization', 'Bearer ' + this.accessToken);

const endpoint1 = 'https://api.spotify.com/v1/me/player/currently-playing';
this.httpClient.get(endpoint1, { headers: headers }).subscribe((data: Object) => {
  console.log(data);
});

const endpoint2 = 'https://api.spotify.com/v1/me/player/play';
this.httpClient.put(endpoint2, { headers: headers }).subscribe((data: Object) => {
  console.log(data);
});

Запрос get работает просто отлично, заголовок Authorization установлен в запросе и работает как положено. Поставленный запрос однако не работает. В ответ я получаю сообщение об ошибке «Токен не предоставлен». Кроме того, в инструментах разработчика Chrome на вкладках сети показан запрос get с заголовком Authorization, но у запроса put нет заголовка Authorization.

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

Для проигрывателя / воспроизведения требуется область действия «пользователь-изменяет-воспроизведение-состояние», а для проигрывателя / воспроизведения в данный момент требуется «пользователь-чтение-воспроизведение-в данный момент» и / или «пользователь-чтение-воспроизведение-состояние», I ' мы включили все три.

Две конечные точки можно найти здесь:

https://developer.spotify.com/documentation/web-api/reference/player/get-the-users-currently-playing-track/

https://developer.spotify.com/documentation/web-api/reference/player/start-a-users-playback/

Почему неудачный запрос на поставку и как я могу это исправить?

1 Ответ

0 голосов
/ 02 июля 2018

Вы должны передать токен в заголовке следующим образом,

this.http.put('https://api.spotify.com/v1/me/player/play',
{
  context_uri: 'spotify:album:' + album.id
},
{
  headers: {
    'Authorization': 'Bearer ' + this.spotifyToken
  }
})
  .subscribe();
...