cURL Post标头在PHP中

时间:2015-12-07 16:15:42

标签: php api curl

我尝试在Twitter API中获取访问令牌: https://dev.twitter.com/oauth/application-only

我在PHP中使用cURL,但我没有得到结果!

我的代码:

$consumer_key       =   "XXXXXXXX";
$consumer_secret    =   "XXXXXXXX";

$base64             =   base64_encode($consumer_key.':'.$consumer_secret);

$data = array("grant_type" => "client_credentials");

$header = array(
                "Authorization"     =>  "Basic $base64",
                "Content-Type"      =>  "application/x-www-form-urlencoded;charset=UTF-8",
                "Accept-Encoding"   =>  "gzip",
            );

$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, 'https://api.twitter.com/oauth2/token');
curl_setopt ($curlObj, CURLOPT_HTTPHEADER, $header);
curl_setopt($curlObj, CURLOPT_POST, 1);
curl_setopt($curlObj, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($curlObj);
$json = json_decode($response, true);
curl_close($curlObj);

print_r($json);

问题在哪里?!

2 个答案:

答案 0 :(得分:0)

尝试使用curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);

答案 1 :(得分:0)

您正在错误地发送标题。标头数组不在键值对中。它只是一个简单的数组。如下所示:

$header = array(
    "Authorization: Basic $base64",
    "Content-Type: application/x-www-form-urlencoded;charset=UTF-8",
    "Accept-Encoding: gzip",
);

对于帖子字段,使用http_build_query上的函数$data

curl_setopt($curlObj, CURLOPT_POSTFIELDS, http_build_query($data));