Php: spotify 播放曲目使用 PUT curl
Php: spotify playback track using PUT curl
在Spotify文档中,表示可以发送指令播放歌曲。
他试图将此转发给 php 但没有回复请求。
我不知道我会做错什么,我希望能解决这个问题。
这是我的请求正文
{
"uris": [
"spotify:track:7fODjB7BrQTGqh0hogW6XD"
]
}
在网络上可以,但在 php 我无法发送请求。
{ "error": { "status": 401, "message": "Invalid access token" } }
这是我的 php 代码 [更新 - 2019/11/8]
function sendTrack($token){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.spotify.com/v1/me/player/play' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$token.''));
$result=curl_exec($ch);
echo $result;
}
您的 CURL_POSTFIELDS 格式错误。试试这个
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]);
编辑:
另外根据 spotify 文档,您需要发送 PUT 请求,而不是
curl_setopt($ch, CURLOPT_POST, 1 );
尝试
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
编辑2:
刚刚尝试了这段代码并且它有效,只是创建了一个错误,即没有找到活动设备,我肯定发生了,因为我错过了一两步。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.spotify.com/v1/me/player/play' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: json', 'Authorization: Bearer ' . $token));
$result=curl_exec($ch);
echo $result;
在Spotify文档中,表示可以发送指令播放歌曲。
他试图将此转发给 php 但没有回复请求。 我不知道我会做错什么,我希望能解决这个问题。
这是我的请求正文
{
"uris": [
"spotify:track:7fODjB7BrQTGqh0hogW6XD"
]
}
在网络上可以,但在 php 我无法发送请求。
{ "error": { "status": 401, "message": "Invalid access token" } }
这是我的 php 代码 [更新 - 2019/11/8]
function sendTrack($token){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.spotify.com/v1/me/player/play' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Bearer '.$token.''));
$result=curl_exec($ch);
echo $result;
}
您的 CURL_POSTFIELDS 格式错误。试试这个
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]);
编辑: 另外根据 spotify 文档,您需要发送 PUT 请求,而不是
curl_setopt($ch, CURLOPT_POST, 1 );
尝试
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
编辑2: 刚刚尝试了这段代码并且它有效,只是创建了一个错误,即没有找到活动设备,我肯定发生了,因为我错过了一两步。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.spotify.com/v1/me/player/play' );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(['uris' => ['spotify:track:7fODjB7BrQTGqh0hogW6XD']]));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: json', 'Authorization: Bearer ' . $token));
$result=curl_exec($ch);
echo $result;