2010-08-09 39 views
0

其實這不是一個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; 

}

感謝

+1

嗯,首先,全部更換那些「+ =」與「。=」。 「。」運算符用於PHP中的連接。 – pop850 2010-08-09 00:36:27

+1

不,不是「。=。」,只是:「。=」 – pop850 2010-08-09 01:02:48

回答