php - cURL 请求 Spotify API 意外状态 : 415

标签 php curl spotify

这是我向 Spotify 发出身份验证请求的脚本,但它返回错误。我尝试更改 Content-Type,但这似乎并没有解决它。这是我的代码:

    $spot_api_client = 'client';
    $spot_api_secret = 'secret';
    $spot_api_redirect = 'myurl';

    if(isset($_GET['state']) && isset($_COOKIE['stateKey']) && $_COOKIE['stateKey'] == $_GET['state']){

        $ch = curl_init();
        $curlConfig = array(
           CURLOPT_URL            => "https://accounts.spotify.com/api/token",
           CURLOPT_POST           => true,
           CURLOPT_RETURNTRANSFER => true,
           CURLOPT_POSTFIELDS     => array(
               'grant_type' => 'authorization_code',
               'code' => $_GET['code'],
               'redirect_uri' => urlencode($spot_api_redirect),
           ),
           CURLOPT_HTTPHEADER     => array(
               'Accept' => '*/*',
               'User-Agent' => 'runscope/0.1',
               'Authorization' => 'Basic '. base64_encode($spot_api_client.':'.$spot_api_secret), 
               'Content-Type'=>'application/json'
           )
       );
       curl_setopt_array($ch, $curlConfig);
       $result = curl_exec($ch);
       curl_close($ch);

       print_r($result);

   }

最佳答案

嗯,看来我找到了基于 this question 的答案:

    $url = 'https://accounts.spotify.com/api/token';
    $method = 'POST';
    $spot_api_redirect = 'myurl';

    $credentials = "client:secret";

    $headers = array(
            "Accept: */*",
            "Content-Type: application/x-www-form-urlencoded",
            "User-Agent: runscope/0.1",
            "Authorization: Basic " . base64_encode($credentials));

    $data = 'grant_type=authorization_code&code='.$_GET['code'].'&redirect_uri='.urlencode($spot_api_redirect);

    if(isset($_GET['state']) && isset($_COOKIE['stateKey']) && $_COOKIE['stateKey'] == $_GET['state']){
        unset($_COOKIE['stateKey']);
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = json_decode(curl_exec($ch), true);
        curl_close($ch);
        print_r($response);

    }

关于php - cURL 请求 Spotify API 意外状态 : 415,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28943140/

相关文章:

ajax - Spotify 应用程序请求授权

node.js - Despotify、node-spotify-web 和 Spotify 轨道 ID 表示

php - 如何在不复制的情况下在php中重新索引数组

php - Ubuntu Lamp - 代理 - 防火墙 - Joomla curl 和 fsockopen 无法工作

python - OpenAI API 错误 : "InvalidRequestError: Invalid URL (POST/v1/classifications)"

c# - 如何在 RestSharp 中使用 OAuth2

python - Spotify 图表抓取数据

php - 交响学说协会

php - 相似图像 - 如何比较它们

javascript - 如何比较表格中的两个数字?