我试图向协作播放列表中添加一个轨道,这是我的访问令牌代码。
$credentials = 'client_id:client_secret';
$headers = array(
'Accept: */*',
'Content-Type: application/x-www-form-urlencoded',
'User-Agent: runscope/0.1',
'Authorization: Basic '.base64_encode($credentials));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://accounts.spotify.com/api/token');
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'grant_type=client_credentials');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$response = json_decode($response, true);
echo $token = $response['access_token'];
curl_close($ch);在我的页面中,用户没有被记录,所以我创建了协作播放列表。
这是我的add playlist函数
var addplaylist = function (id,token) {
$.ajax({
dataType: 'text',
type: 'post',
url: 'https://api.spotify.com/v1/users/entelperú/playlists/6sU8XOS7BLicR3COsc0Rhp/tracks?uris=spotify:track:'+ id,
headers: {
Authorization: "Bearer "+token,
},success: function (response) {
alert(response);
}
});
};但它会返回这个
{“错误”:{“状态”:403,“消息”:“此请求需要用户身份验证”}}
我不知道发生了什么,我已经创建了访问令牌。
发布于 2017-01-31 12:54:57
{“错误”:{“状态”:403,“消息”:“此请求需要用户身份验证”}}
您正在向将曲目添加到播放列表中发出的请求需要一个连接到用户的访问令牌。
您使用的访问令牌可以来自三个不同的oAuth 2.0流。其中一个流,客户端凭据流,返回匿名访问令牌。或者更确切地说,是没有连接到任何用户的访问令牌。阅读更多关于授权指南中的流的内容。
对于某些端点,可以使用匿名访问令牌。比如检索播放列表。但是很多操作,如添加曲目、跟踪艺术家和保存曲目,都需要用户给予应用程序代表他们的明确许可。此权限也称为范围。
因此,您需要的是使用与现在使用的oAuth 2.0流不同的流。哪一种取决于您正在构建的应用程序类型。重要的是您需要一个用户来批准应用程序正在执行的操作。
https://stackoverflow.com/questions/41944931
复制相似问题