duangu4943
2016-01-31 05:44
浏览 59
已采纳

Spotify的OAuth无法使用curl获取刷新令牌

I've been creating my own Spotify API for a project. I've followed the Web API tutorial and I still can not get an authorization for a refresh token.

This request is made immediately after I get my first authorization successfully.

Can anyone spot an issue with my code?

//Request for refresh token
$url = "https://accounts.spotify.com/api/token";
$fieldString = "";
$fields = array(
    "grant_type" => "authorization_code",
    "code" => $_GET['code'],
    "redirect_uri" => $spotify->getRedirectURI()
    //"client_id" => $spotify->getClientID(),
    //"client_secret" => $spotify->getClientSecret()
);
$headers = array(
    "Accept: application/json",
    "Content-Type: application/x-www-form-urlencoded",
    "Authorization: Basic ".base64_encode($spotify->getClientID().":".$spotify->getClientSecret())
);

echo http_build_query($fields)."<br/>";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($fields));

$response = curl_exec($ch);
curl_close($ch);

var_dump(json_decode($response));
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dtukyb8095 2016-01-31 18:44
    已采纳

    The reason I was receiving a bad response is because I needed:

     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    

    After I inserted that line, I was able to acquire my tokens. Hopefully this is helpful.

    点赞 打赏 评论
  • drwo2014 2016-01-31 08:08

    The correct option to set header is CURLOPT_HTTPHEADER and unfortunately you are using CURLOPT_HEADER. That's why your authorization header is not set with curl request.

    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    点赞 打赏 评论

相关推荐 更多相似问题