我已经研究 Spotify api 和示例源代码几天了,但我仍然不知道如何获取访问令牌来访问用户的播放列表数据。我已经达到了拉出登录窗口、用户登录、然后收到授权码的地步。此时,我尝试做这样的事情:
window.open("https://accounts.spotify.com/api/token?
grant_type=authorization_code&code="+code+"&redirect_uri=myurl&client_id=3137b15
2f1424defa2c6020ae5c6d444&client_secret=mysecret");
和
$.ajax(
{
url: "https://accounts.spotify.com/api/token?grant_type=authorization_code&code="+code+"&redirect_uri=myurl&client_secret=mysecret&client_id=myid",
success: function(result){
alert("foo");
}
}
);
但无论如何我都会得到这样的结果:
{"error":"server_error","error_description":"Unexpected status: 405"}
而不是代币。我确信这很简单,但我在 JS 方面很糟糕。请帮忙!谢谢你!
(编辑)我忘了提及:
API 身份验证指南链接:https://developer.spotify.com/web-api/authorization-guide/
我陷入了第 4 步。我发现有一种发送“标头参数”或 cURL 请求的替代方法可能有效。但鉴于我不知道如何做这些事情,我一直坚持将 client_id 和 client_secret 作为正文请求参数发送,就像我之前为用户登录/代码所做的那样。
PS:我只使用我为自己编写的这个应用程序。有没有一种方法可以在不执行此过程的情况下对令牌进行硬编码?
收到授权代码后,您需要将其与访问令牌进行交换通过向 Spotify 帐户服务发出 POST 请求,这次是到其 /api/token 端点:
因此您需要向 Spotify API 发出 POST 请求,请求正文中包含参数:
$.ajax(
{
method: "POST",
url: "https://accounts.spotify.com/api/token",
data: {
"grant_type": "authorization_code",
"code": code,
"redirect_uri": myurl,
"client_secret": mysecret,
"client_id": myid,
},
success: function(result) {
// handle result...
},
}
);
(作为旁注,“意外状态:405” 指的是 HTTP 状态代码 405 方法不允许,这表明您尝试的请求方法(GET 请求)在该 URL 上不被允许。)
如果有人需要它,现在有一项服务可以自动化它并轻松提供 Spotify access_token(使用身份验证代码流),称为 https://spoken.host