其實這不是一個PHP的問題,它更關於OAuth。 我試圖瞭解如何生成OAuth標誌密鑰。 我閱讀了推特文檔並嘗試了這個例子,但我無法理解如何使用SHA1。如何使用php爲Twitter API生成OAuth簽名?
我是否應該在有或沒有secret_key的基本字符串上使用SHA1? 我嘗試了很多變化,但標誌鍵與示例中的標誌鍵不同。
這是我的代碼:
function request_token(){
$headers = 'POST&';
$headers .= urlencode('https://api.twitter.com/oauth/request_token');
$headers .= '%26oauth_callback%3d'.urlencode($this->oauth_callback);
$headers .= '%26oauth_consumer_key%3d'.urlencode($this->oauth_consumer_key);
$headers .= '%26oauth_nonce%3d'.urlencode($this->oauth_nonce);
$headers .= '%26oauth_signature_method%3d'.urlencode($this->oauth_signature_method);
$headers .= '%26oauth_timestamp%3d'.urlencode($this->oauth_timestamp);
$request_token_url = 'http://api.twitter.com/oauth/request_token?';
$sha = sha1($headers);
$url = $request_token_url.$sha.$this->consumer_secret.'&';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,2);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch, CURLOPT_POST ,1);
curl_setopt($ch,CURLOPT_PUT,true);
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
感謝
嗯,首先,全部更換那些「+ =」與「。=」。 「。」運算符用於PHP中的連接。 – pop850 2010-08-09 00:36:27
不,不是「。=。」,只是:「。=」 – pop850 2010-08-09 01:02:48