Php: spotify 播放曲目使用 PUT curl

Php: spotify playback track using PUT curl

在Spotify文档中,表示可以发送指令播放歌曲。

Documentation here

他试图将此转发给 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;