2010-10-20 7 views
0

J'ai le code suivant, mais il ne met pas à jour mon statut (le nom d'utilisateur et mot de passe a été supprimé pour cet extrait) et il jette l'erreur eeek. Des idées pour lesquelles ça ne marche pas?Mettre à jour l'état Twitter en utilisant PHP Formulaire

EDIT:

Apparemment, Twitter BESOINS OAuth à la place maintenant. J'ai suivi ce tutoriel ici: http://ditio.net/2010/06/07/twitter-php-oauth-update-status/

J'ai enregistré mon application et copié à la fois la bibliothèque et les jetons. MAIS je ne suis pas sûr comment obtenir ce travail avec mon code actuel, c'est-à-dire. ce qui a besoin de changer/ajouter/supprimer.

Mon code Mise à jour:

<?php 

    function postToTwitter($username,$password,$message) 
    { 

     require_once 'TwitterOAuth.php'; 

     define("CONSUMER_KEY", "???"); 
     define("CONSUMER_SECRET", "???"); 
     define("OAUTH_TOKEN", "???"); 
     define("OAUTH_SECRET", "???"); 

     $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_SECRET); 
     $content = $connection->get('account/verify_credentials'); 

     $connection->post('statuses/update', array('status' => date(DATE_RFC822))); 

     // GET the API url via web authentication 
     // add 'status' param to send a message to Twitter 

     $host = "http://api.twitter.com/1/statuses/update.xml?status=".urlencode(stripslashes(urldecode($message))); 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $host); 
     curl_setopt($ch, CURLOPT_VERBOSE, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); 

     curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
     curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
     curl_setopt($ch, CURLOPT_POST, 1); 

     // Go for it!!! 
     $result = curl_exec($ch); 
     // Look at the returned header 
     $resultArray = curl_getinfo($ch); 

     // close curl 
     curl_close($ch); 

     //echo "http code: ".$resultArray['http_code']."<br />"; 

     if($resultArray['http_code'] == "200"){ 
      echo "<br />OK! posted to http://twitter.com/".$username."/<br />"; 
     } else { 
      echo "eek! yegads! error posting to Twitter"; 
     } 

     // debug the result 
     // echo "<pre>"; 
     // print_r($resultArray); 
     // echo "</pre><hr>"; 

     // $sResult = htmlentities($result); 
     // $sResult = str_replace("&gt;&lt;","&gt;<br />&lt;",$sResult); 

     // echo "<pre>"; 
     // print $sResult; 
     // echo "</pre>"; 

    } 

    if(isset($_POST['submit'])) 
    { 
     $textmessage = $_POST['message']; 
     postToTwitter("whiningwall","u0558234",$textmessage); 
    } 

?><!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
     <meta name="viewport" content="width=1024"> 
     <title></title> 
     <link rel="stylesheet" type="text/css" href="master.css" media="screen" /> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
    </head> 

    <body> 

     <form id="post" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 

      <fieldset> 

       <label for="textArea">What's on your mind?</label> 
       <textarea id="textArea" name="message" maxlength="140"></textarea> 

       <div class="submit"> 
        <span class="charsRemaining"></span> 
        <input type="submit" name="submit" value="Share" /> 
       </div> 

      </fieldset> 

     </form> 

     <script type="text/javascript" src="jquery.maxlength.js"></script> 
     <script type="text/javascript"> 
      $('#textArea').focus(); 
     </script> 

    </body> 
</html> 
+0

Si quelqu'un pouvait vous aider avec le code OAuth mis à jour qui serait génial. Merci – Cameron

+0

Des mises à jour? Voudrait obtenir ce travail dès que possible. Merci encore. – Cameron

Répondre

2

Je crois que CURLOPT_USERPWD est pour l'authentification de base d'Apache, dont Twitter n'utilise pas. Je ne sais pas grand-chose sur l'API Twitter, mais je pense que vous feriez mieux d'utiliser OAuth pour dire à Twitter qui vous êtes.

Modifier pour ajouter: Il y a la bibliothèque de la GPL à http://code.google.com/p/php-twitter/ que vous pourriez essayer (ou même utiliser).

+0

Mis à jour ma question. Seriez-vous capable de m'aider à faire fonctionner l'OAuth avec mon code? – Cameron

Questions connexes