从 Spotify 请求访问令牌时出现错误“仅支持有效的不记名身份验证”
Posted
技术标签:
【中文标题】从 Spotify 请求访问令牌时出现错误“仅支持有效的不记名身份验证”【英文标题】:Error "Only valid bearer authentication supported" when requesting access token from Spotify 【发布时间】:2016-04-06 22:35:59 【问题描述】:我正在尝试从 Spotify 获取 oAuth 访问令牌(Guide 中的第 4 步)。
我相信,我发送了他们文档中描述的所有必需参数,但 Spotify 回复:
"error":
"status": 400,
"message": "Only valid bearer authentication supported"
这是我在 node.js 中的请求:
function getToken(code)
var idAndSecret = config.clientId+':'+config.clientSecret;
var authString = 'Basic ' + new Buffer(idAndSecret).toString('base64');
var data = querystring.stringify(
grant_type: "authorization_code",
code: code,
redirect_uri: REDIRECT_URI
);
var tokenReq = https.request(
hostname: 'api.spotify.com',
path: '/api/token?'+data,
method: 'POST',
headers:
'Authorization': authString
, function(res)
res.on('data', function(chunk)
console.log(new Buffer(chunk).toString());
);
console.log(res.statusCode, JSON.stringify(res.headers));
);
tokenReq.end();
我已经检查了我的 clientId、clientSecret、auth-code 和 redirectUri。
这是响应标头:
"server":"nginx",
"date":"Sat, 02 Jan 2016 23:58:58 GMT",
"content-type":"application/json",
"content-length":"99",
"connection":"close",
"www-authenticate":"Bearer realm=\\"spotify\\",
error=\\"invalid_request\\",
error_description=\\"Only valid bearer authentication supported\\"",
"access-control-allow-origin":"*",
"access-control-allow-methods":"GET, POST, OPTIONS, PUT, DELETE",
"access-control-allow-credentials":"true",
"access-control-max-age":"604800",
"access-control-allow-headers":"Accept, Authorization, Origin, Content-Type"
【问题讨论】:
【参考方案1】:这是错误的端点:应该是 accounts.spotify.com 而不是 api.spotify.com
然后我得到了一个状态 500 并且我也修复了这个:
function getToken(code)
var idAndSecret = config.clientId+':'+config.clientSecret;
var authString = 'Basic ' + new Buffer(idAndSecret).toString('base64');
var data = querystring.stringify(
grant_type: "authorization_code",
code: code,
redirect_uri: REDIRECT_URI
);
var tokenReq = https.request(
hostname: 'accounts.spotify.com',
path: '/api/token',
method: 'POST',
headers:
'Authorization': authString,
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(data)
, function(res)
res.on('data', function(chunk)
console.log(new Buffer(chunk).toString());
);
console.log(res.statusCode, JSON.stringify(res.headers));
);
tokenReq.end(data);
【讨论】:
你让我免于继续浪费我的时间。我使用了错误的主机名并打破了为什么 Postman 工作而不是我的应用程序。谢谢!!以上是关于从 Spotify 请求访问令牌时出现错误“仅支持有效的不记名身份验证”的主要内容,如果未能解决你的问题,请参考以下文章
向 Spotify API 发出 PUT 请求时出现 401 错误