Spotify API调用使用springTemplate返回内部服务器错误

时间:2019-09-17 12:58:41

标签: spotify resttemplate

我正在尝试使用spring restTemplate调用Spotify API端点,但是HTTP调用返回Internal server error

这是Spotify的问题吗?还是我使用此API的方式不正确?

示例:。

String API = "https://api.spotify.com/v1/";
HttpHeaders headers = new HttpHeaders();
headers.setBearerAuth(accessToken);
HttpEntity<String> entity = new HttpEntity<>(headers);
String url = API + "me/top/artists";
restTemplate.exchange(url, HttpMethod.GET, entity, String.class);

例外:

org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error

    at org.springframework.web.client.HttpServerErrorException.create(HttpServerErrorException.java:79)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:124)
    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:102)
    at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
    at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:778)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:736)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:670)
    at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:579)

我使用curl尝试了具有相同accessToken的相同呼叫:

>curl -X "GET" -H "Authorization: Bearer accessToken" https://api.spotify.com/v1/me/top/artists
> 

但是,这没有返回任何信息(可能是相同的内部服务器错误?)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用curl的调用未返回任何事实,表明您使用的访问令牌可能未授权所有需要的作用域。端点/v1/me/top/{type}需要user-top-read授权。

在您的访问令牌中包含此范围应该可以解决此问题。

您也可以测试此场景here