2012-08-15 3 views
-1

On m'a confié la tâche de développer un système de connexion unique utilisant Twitter et je ne suis pas autorisé à utiliser des API tierces. Je suis cependant autorisé à utiliser CURL et PHP. Quelle serait la meilleure façon de faire cela. jusqu'à présent j'ai cela mais ça ne marche pas. Il génère l'erreur "Impossible de valider la signature et le jeton oauth"Twitter Single Sign On OAuth PHP sans API tierce

Je voudrais des conseils sur la façon de procéder.

$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

"ça ne marche pas": Qu'est-ce qui ne fonctionne pas? Avez-vous des erreurs? – Tchoupi

+0

Impossible de valider la signature et le jeton oauth –

+0

Votre 'rtrim()' ne fait rien car vous avez fourni une chaîne vide. Vous devriez utiliser 'http_build_query()' pour encoder vos paramètres. 'CURLOPT_POST' attend un booléen. Vous devriez utiliser 'curl_error()' pour savoir ce qui se passe. Il peut y avoir quelque chose qui ne va pas avec les paramètres, mais nous ne les voyons pas. Pouvez-vous nous montrer quels paramètres vous incluez dans '$ fields'? – Tchoupi

Répondre

0

Je suggère l'utilisation de la bibliothèque PEAR HTTP_OAUTH. Il n'y a aucune raison de réinventer la roue.