我正在使用 react-native(并且本质上使用内置的 fetch 方法。我有以下代码发布到 spotify,并且应该返回一个令牌,而不是我收到错误的令牌。
法典:
var btoa = require('base-64');
var authOptions = {
method : 'POST',
body: JSON.stringify({
code: resCode,
redirect_uri: 'myapp://foo',
grant_type: 'authorization_code'
}),
headers: {
'Authorization': 'Basic ' + btoa.encode(secrets.id + ':' + secrets.secret)
},
json: true
};
fetch('https://accounts.spotify.com/api/token', authOptions).then(
(res) => console.log(res)
);
我收到的错误:
Response {_bodyInit: "{"error":"unsupported_grant_type","error_descripti…redentials, authorization_code or refresh_token"}", _bodyText: "{"error":"unsupported_grant_type","error_descripti…redentials, authorization_code or refresh_token"}", type: "default", url: "https://accounts.spotify.com/api/token", status: 400…}
您正在发送json
的字符串在帖子正文中,但是根据文档,您必须发送参数。此外,如果您查看示例 curl 请求,您可以看到它是如何完成的:
curl -H "Authorization: Basic ZjM...zE=" -d grant_type=authorization_code -d code=MQCbtKe...44KN -d redirect_uri=https%3A%2F%2Fwww.foo.com%2Fauth https://accounts.spotify.com/api/token
这不是json
.尝试将尸体作为FormData
发送。