为什么我的回调不适用于 axios 库?

Why is my callback not working with the axios library?

我有一个小型 Spotify 应用程序,我正在尝试将其转换为使用 axios http 库。我在登录时遇到回调问题。到目前为止,我一直在使用 request,就像在所有 Spotify 文档中一样。使用 request 一切正常,但即使使用 axios 一切看起来都一样,我得到的是 500 Internal Server Error。这是我发出 http 请求的代码:

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

axios(authOptions).then(res => {
    console.log(res)
})

我可以将相同的 authOptions 对象传递给 request 库,一切正常。这是我从 axios 登录到控制台的请求。

{ 
  method: 'POST',
  url: 'https://accounts.spotify.com/api/token',
  form: 
   { code: 'changedthecode',
     redirect_uri: 'http://localhost:8888/callback',
     grant_type: 'authorization_code' },
  headers: { Authorization: 'Basic changedthecode=' },
  json: true,
  timeout: 0,
  transformRequest: [ [Function] ],
  transformResponse: [ [Function] ],
  withCredentials: undefined 
}

这是我对 axios 图书馆的回应:

{ data: { error: 'server_error' },
  status: 500,
  statusText: 'Internal Server Error',
  headers: 
   { server: 'nginx',
     date: 'Fri, 04 Dec 2015 14:48:06 GMT',
     'content-type': 'application/json',
     'content-length': '24',
     connection: 'close' },
  config: 
   { method: 'POST',
     headers: { Authorization: 'Basic changedthecode' },
     timeout: 0,
     transformRequest: [ [Function] ],
     transformResponse: [ [Function] ],
     url: 'https://accounts.spotify.com/api/token',
     form: 
      { code: 'changedthecode',
        redirect_uri: 'http://localhost:8888/callback',
        grant_type: 'authorization_code' },
     json: true,
     withCredentials: undefined } 
}

我在 axios 中唯一不知道的选项是 withCredentials,当它设置为 falsetrue 时它不起作用.我还缺少什么?

问题是我正在发布一个表单,但在通过网络时没有对其进行编码,而且我没有设置 Content-Type。我将 authOptions 更改为:

var authOptions = {
    method: 'POST',
    url: 'https://accounts.spotify.com/api/token',
    data: querystring.stringify({
            grant_type: 'refresh_token',
            refresh_token: refreshToken
        }),
    headers: {
        'Authorization': 'Basic ' + (new Buffer(CLIENT_ID + ':' + CLIENT_SECRET).toString('base64')),
        'Content-Type': 'application/x-www-form-urlencoded'
    },
    json: true
};

一切正常。