2015-12-03 62 views
0

在嘗試使用Twitter的GET statuses/user_timeline API我寫我自己一些不錯的PHP腳本生成所有需要的值,但如果我想執行此,它只是給我Twitter的不接受PHP的捲曲,但Linux的

串(0) 「」

與代碼400,這意味着,根據Twitter的API Response Codes

該請求是無效的或不能以其他方式提供服務。伴隨的錯誤信息將進一步解釋。在API v1.1中,沒有認證的請求被認爲是無效的,並且會產生這個響應。

但是,這個非常相同的請求在正常的終端curl工作正常。

這裏是我的腳本,產生了Linux命令和執行請求的片段:

$auth_str = "Authentication: OAuth ..."; 
$headers = array($auth_str); 
// ... 

if($method == "POST") 
{ 
    echo "curl --request 'POST' '{$url}' --data '{$fields_string}' --header '{$auth_str}' --verbose"; 
} else 
{ 
    echo "curl --get '{$url}' --data '{$fields_string}' --header '{$auth_str}' --verbose"; 
} 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url."?".$fields_string); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER , true); 
curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
$content = curl_exec($ch); 

回答

0

我沒有得到這個特殊的腳本工作,但我發現TwitterOAuth,這是一個非常有用的PHP庫,使我的生活變得更輕鬆。

0

你應該分開在兩個不同的部分GET/POST類似的命令行的例子。

$ch = curl_init(); 
if($method == "POST"){ 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); 
} 
else{ 
    curl_setopt($ch, CURLOPT_URL, $url."?".$fields_string); 
} 
// remove CURLOPT_CUSTOMREQUEST 

// rest of the curl opts go here!