Получение 415 неподдерживаемого медиа-типа при запросе токена из Spotfiy API - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь запросить токен от spotify api для использования в моем приложении.Но я получаю сообщение об ошибке «415 неподдерживаемый тип носителя».

Как я могу обойти эту ошибку?

  1. Я пробовал это в POSTMAN, и, похоже, он работает нормально.
  2. Я пытался изменить тип содержимого с x-www-form-urlencoded на JSON и наоборот, но это не помогло.
getToken() {
  let clientId = "xxxxxxxxxxxxxxxxxxxxxxxxx";
  let clientSecret = "xxxxxxxxxxxxxxxxxxxxxx";
  let apiURL = "https://accounts.spotify.com/api/token";

  let headers = new HttpHeaders();
  headers.append('Content-Type', 'application/x-www-form-urlencoded');
  headers.append('Authorization', 'Basic ' + btoa(clientId + ':' + clientSecret));

  let params = new HttpParams();
  params.append('grant_type', 'client_credentials');

  this.http.post(apiURL+ params, { headers })
    .subscribe((res: IToken) => {
      console.log('token: ', res.access_token);
      console.log('expires in (s):', res.expires_in);
      console.log('Object: ', res);
      this.token = res.access_token;
      this.expiration = new Date().getTime() / 1000 + res.expires_in;
      console.log('now: ', new Date().getTime() / 1000);
      console.log('expiration: ', this.expiration);
    });
}

Пожалуйста, смотрите изображения для ошибкив хромированной консоли:

https://i.stack.imgur.com/9vLnm.png

https://i.stack.imgur.com/ZlSte.png

1 Ответ

0 голосов
/ 31 марта 2019

Просто выстрел в темноте, вы пытались передать заголовки непосредственно в конструктор HttpHeaders()? Я видел странные вещи, которые иногда случаются при попытке .append() или .set() заголовков после их создания.

Попробуйте изменить код заголовка / параметра с:

let headers = new HttpHeaders();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
headers.append('Authorization', 'Basic ' + btoa(clientId + ':' + clientSecret));

Кому:

...

const encodedClient = btoa(`${clientId}:${clientSecret}`);

const headers = new HttpHeaders({
   'Content-Type': 'application/json',
   'Authorization': `Basic ${encodedClient}`
});

const params = new HttpParams({
   'grant_type': 'client_credentials'
});

...

У меня нет гарантии, что это решит вашу проблему, но по вашим фотографиям я вижу, что заголовки / параметры не отображаются, и, возможно, стоит попробовать.

Надеюсь, у вас все получится!

В прошлом я использовал API Spotify для стороннего проекта, написанного на Angular, если вас интересуют ссылки на вещи: SpotifyTelevision

...