Spotify API 400仅错误支持有效承载身份验证

时间:2017-10-04 02:42:56

标签: javascript node.js api authentication

我正在尝试使用spotify api为我的顶级艺术家和歌曲获取数据。我按照https://github.com/spotify/web-api-auth-examples中的授权代码示例进行了操作。授权工作,我可以登录并查看我的基本信息,现在我正在尝试让我的顶级艺术家,但我得到400错误:“只支持有效的承载认证”。

这是我的代码

    app.get('/get_top_artists', function(req, res) {
  var authString = 'Basic' + new Buffer(client_id + ':' + client_secret).toString('base64')
  var authOptions = {
    url: 'https://api.spotify.com/v1/me/top/artists',
    headers: {
      'Authorization': authString
    }, function(res) {
      console.log(res)
    }
  };

  request.post(authOptions, function(error, response, body) {
    if (!error && response.statusCode === 200) {
      var get_top_artists = body.get_top_artists;
      res.send({
        'get_top_artists': get_top_artists
      });
    }
  });
})

修改

    app.get('/get_top_artists', function(req, res) {
  console.log('top artists');

  var authOptions = {
      url: 'https://accounts.spotify.com/api/token',
      form: {
        redirect_uri: redirect_uri,
        grant_type: 'authorization_code'
      },
      headers: {
        'Authorization': 'Basic ' + (new Buffer(client_id + ':' + client_secret).toString('base64'))
      },
      json: true
    };

  request.post(authOptions, function(error, response, body) {
    console.log('request')
    if (!error && response.statusCode === 200) {

        var access_token = body.access_token,
            refresh_token = body.refresh_token;
        var options = {
          url: 'https://api.spotify.com/v1/me/top/artists',
          headers: { 'Authorization': 'Bearer ' + access_token },
          json: true
        };

        // use the access token to access the Spotify Web API
        request.get(options, function(error, response, body) {
          console.log('request 2')
          console.log(body);
        });
     }
  });
})

1 个答案:

答案 0 :(得分:0)

正如您在示例中所看到的,您需要首先使用基本标头进行调用,然后获取您获得的响应,然后调用API。看起来您正在尝试使用基本凭据调用API,这将无效。

https://github.com/spotify/web-api-auth-examples/blob/master/authorization_code/app.js#L73-L102