-1
我已經被授予了使用Twitter開發系統單點登錄的任務,我不允許使用第三方API。然而,我被允許使用CURL和PHP。什麼是最好的方式來做到這一點。到目前爲止,我有這個,但它不起作用。它輸出錯誤「無法驗證oauth簽名和令牌」Twitter單點登錄OAuth PHP沒有第三方API
我想就如何去做這件事提供一些建議。
$fields = array(
'oauth_callback' => 'http://www.mydomain.co.uk/redirect.php'
);
//url-ify the data for the POST
foreach($fields as $key=>$value) {
$fields_string .= $key.'='.$value.'&';
}
rtrim($fields_string, "");
echo $fields_string;
$curl = curl_init("https://api.twitter.com/oauth/request_token");
//Send auth data to twiter
curl_setopt($curl, CURLOPT_POST, count($fields));
curl_setopt($curl, CURLOPT_POSTFIELDS, $fields_string);
//Will return json object
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
//debugger
if($debug){
if(! curl_errno($curl)) {
$info = curl_getinfo($curl);
echo 'Took ' . $info[ 'total_time' ] . ' seconds to send a request to ' . $info[ 'url' ];
}
}
curl_close($curl);
echo $result;
「它不起作用」:什麼不起作用?你有什麼錯誤嗎? – Tchoupi 2012-08-15 20:40:42
無法驗證oauth簽名和令牌 – 2012-08-15 21:06:25
由於您提供了空字符串,因此您的'rtrim()'不會執行任何操作。你應該使用'http_build_query()'來編碼你的參數。 'CURLOPT_POST'需要一個布爾值。你應該使用'curl_error()'來找出發生了什麼。參數可能有問題,但我們沒有看到它們。你能告訴我們你在'$ fields'中包含了什麼參數嗎? – Tchoupi 2012-08-15 21:18:47