2012-08-15 65 views
-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; 
+0

「它不起作用」:什麼不起作用?你有什麼錯誤嗎? – Tchoupi 2012-08-15 20:40:42

+0

無法驗證oauth簽名和令牌 – 2012-08-15 21:06:25

+0

由於您提供了空字符串,因此您的'rtrim()'不會執行任何操作。你應該使用'http_build_query()'來編碼你的參數。 'CURLOPT_POST'需要一個布爾值。你應該使用'curl_error()'來找出發生了什麼。參數可能有問題,但我們沒有看到它們。你能告訴我們你在'$ fields'中包含了什麼參數嗎? – Tchoupi 2012-08-15 21:18:47

回答

0

我會建議使用PEAR HTTP_OAUTH庫。沒有理由重新發明車輪。