Voici comment envoyer un tweet (un message) sur votre compte Twitter depuis une page PHP (status update).
Si vous avez un site web où des mises à jour sont régulièrement postées, et que vous voulez les envoyer sur un compte Twitter, vous pourrez le faire facilement sans avoir à aller vous-même le faire. Vous pourrez intégrer cet envoi à votre système actuel de mises à jour de votre site web.
Note : cet article a inspiré les gars de Kidi Services, qui en ont fait une version plus récente. Jetez-y un coup d’œil si les informations ci-dessous vous semblent périmées (et avertissez-moi par un p’tit email, merci). Leur page est là : http://wiki.kidi-services.com/tuto/envoyer-un-tweet-simplement-en-php-avec-oauth-twitter/
Pré-requis
Il vous faut bien sûr :
-
un compte Twitter 🙂
-
Un serveur web avec PHP.
Créer une application Twitter
Même pour envoyer un simple tweet, depuis le 1er septembre 2010 il est nécessaire de s’enregistrer auprès de Twitter en déclarant une application. Avant cette date, il était possible d’envoyer simplement un tweet avec Curl, qui utilisait une authentification basique. Il faut maintenant utiliser OAuth, qui est beaucoup plus complexe.
Marche à suivre :
-
Connectez-vous sur Twitter, puis allez sur http://dev.twitter.com/
-
Cliquez sur “Your Apps” puis “Register a new application”
-
Remplissez les champs, n’oubliez pas de cocher “Read & Write” au lieu de “Read-only” dans “Default Access type”. Les autres informations n’ont que peu d’importance, comme “callback url” qui ne nous servira pas : mettez simplement l’adresse de votre site web par exemple.
-
Une fois l’application enregistrée, nous obtenons les clefs nécessaires par la suite : en cliquant sur les détails de votre application, vous verrez :
-
Consumer key
-
Consumer secret
-
-
puis en cliquant sur My access token, vous obtiendrez :
-
Access Token (oauth_token)
-
Access Token Secret (oauth_token_secret)
-
Notez ces 4 informations, nous en aurons besoin. Ce sont des chaines de caractères comme 1234AzErtY789MLkjhG (les miennes font 21 à 48 caractères).
Bibliothèque (library) tmhOAuth
Gérer l’authentification OAuth est assez complexe, et il existe des bibliothèques toutes faites en PHP. J’ai choisi tmhOAuth de Matt Harris : il a été très réactif et disponible sur le canal #twitterapi de freenode quand j’ai eu des questions. Vive le logiciel libre ^_^
Téléchargez le fichier tmhOAuth.php depuis http://github.com/themattharris/tmhOAuth et placez-le dans votre espace web.
Vous trouverez de nombreux exemples pour utiliser cette bibliothèque :
J’ai utilisé cet exemple pour créer cette fonction, utilisez-là librement. Quelques remarques :
-
Renseignez les 4 champs consumer_key, consumer_secret, user_token et user_secret avec les informations obtenues ci-dessus.
-
Si votre $message est déjà codé en UTF-8, remplacez utf8_encode($message) par $message
/** * Envoie un message sur twitter (stat * Si le message, une fois encodé en UTF-8, fait plus de 140 caractères, alors il ne sera pas accepté par Twitter. * * @param $message Message à envoyer à Twitter * @return TRUE ou FALSE */ function tweet($message) { require 'tmhOAuth.php'; $tmhOAuth = new tmhOAuth(array( 'consumer_key' => '', 'consumer_secret' => '', 'token' => '', 'secret' => '', )); $tmhOAuth->request('POST', $tmhOAuth->url('1.1/statuses/update'), array( 'status' => utf8_encode($message) )); if ($tmhOAuth->response['code'] == 200) { // En cours de dév, afficher les informations retournées : // $tmhOAuth->pr(json_decode($tmhOAuth->response['response'])); return TRUE; } else { // En cours de dév, afficher les informations retournées : // $tmhOAuth->pr(htmlentities($tmhOAuth->response['response'])); return FALSE; } }
tmhOAuth est un logiciel libre, distribué sous la licence Apache 2. Le code ci-dessus, dont il est issu, est donc basé sous la même licence libre Apache 2.
tmhOAuth permet bien plus que d’envoyer un simple tweet, je vous laisse lire sa documentation pour découvrir l’étendue de ses possibilités. Merci à Matt Harris pour son travail.