无法在Angular应用中获得Spotify API的响应

时间:2017-06-10 13:33:39

标签: angular spotify

当我尝试从Spotify API调用中获取json响应时,我收到以下错误:

XMLHttpRequest cannot load https://api.spotify.com/v1/search?query=eminem&offset=0&limit=20&type=artist&market=US. Request header field Access-Token is not allowed by Access-Control-Allow-Headers in preflight response.

我已注册我的应用并使用此处的代码(授权代码)https://github.com/spotify/web-api-auth-examples来生成针对client_id的{​​{1}}设置为redirect_url的访问令牌。

我尝试通过以下方式在Angular服务中使用此访问令牌:

http://localhost:8888/callback

但如上所述,它给了我错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

Altough我不熟悉Spotify API,它看起来像使用承载令牌方案的OAuth2隐式授权流程。

RFC 6750所述,必须在Authorization - 标题中传输令牌。

  

在HTTP / 1.1 [RFC2617]定义的“授权”请求头字段中发送访问令牌时,客户端使用“承载”身份验证方案来传输访问令牌。

     

例如:

     

GET /resource HTTP/1.1
  Host: server.example.com
  Authorization: Bearer mF_9.B5f-4.1JqM

     

[...]

     

客户端应该使用带有“承载”HTTP授权方案的“授权”请求头字段,使用承载令牌进行经过身份验证的请求。

在你的代码中,你正在做

const headers = new Headers({ 'Access-Token': 'My-Access-Token' });

,你得到的错误是Request header field 'Access-Token' is not allowed

假设Spotify API符合标准(如果他们没有,我会感到惊讶)你的标题应如下所示:

const access_token = 'YourAccessToken'
const headers = new Headers({ 'Authorization': 'Bearer ' + access_token });