Afficher tous les membres d’une liste Twitter API 1.1 en PHP

Suite à une demande pour le blog du MFNantes, je vais vous expliquer comment récupérer les membres d’une liste d’un compte Twitter et les afficher sur votre site Internet.

Vous pouvez consultez la démo en ligne sur le blog du MFNantes, à laquelle j’ai ajouté un petit moteur de recherche instantanée.

Le traitement s’est fait avec la Twitter API 1.1 et PHP5.

L’application Twitter

Avant toute chose, si vous souhaitez travailler avec l’API Twitter, il vous faut vous créer une application sur https://apps.twitter.com/ avec votre compte Twitter et en indiquant le nom de domaine de votre site Internet. Cela vous est nécessaire pour pouvoir vous identifier auprès de Twitter avant d’envoyer vos requêtes.
create_app_twitter

Le traitement PHP

Pour pouvoir vous connecter à Twitter en PHP, il vous faut utiliser une librairie oAuth pour PHP (vous trouverez la page officielle Twitter dans les ressources utiles en fin d’article). Une fois la librairie installée dans votre dossier, il vous suffit simplement de l’inclure dans votre fichier de traitement.
require_once('twitteroauth/twitteroauth.php');

Il faut ensuite définir les différentes variables :
– Votre compte Twitter
$twitter_account = "XXXXXXXXXXX";

– Le nom de la liste source (utilise le nom affiche dans l’URL de la liste)
$twitter_liste = "XXXXXXXXXXX";

– Les données de connexion à votre application Twitter
$twitter_consumerkey = "XXXXXXXXXXX";
$twitter_consumersecret = "XXXXXXXXXXX";
$twitter_accesstoken = "XXXXXXXXXXX-XXXXXXXXXXX";
$twitter_accesstokensecret = "XXXXXXXXXXX";

Et enfin, initialiser l’objet de connexion Twitter :
$twitterconn = new TwitterOAuth($twitter_consumerkey, $twitter_consumersecret, $twitter_accesstoken, $twitter_accesstokensecret);

Une fois l’objet créé, vous pouvez alors lancer votre première requête \o/
La requête ci-dessous récupère les membres d’une liste d’un compte Twitter :
$twitterconn->get("https://api.twitter.com/1.1/lists/members.json?slug=" . $twitter_liste . "&owner_screen_name=" . $twitter_account . "&cursor=" . $cursor);

Cependant, Twitter limite les requêtes à 20 résultats maximum. Ne paniquez pas, il s’agit en fait d’un système de pagination que Twitter a mis en place, sûrement pour limiter les requêtes gourmandes. Imaginez juste la taille des données à envoyer pour requête contenant des milliers de résultats.

En fouinant l’API Twitter, on comprend rapidement le process à suivre. Au lieu de travailler une unique grosse requête, il faut donc travailler sur plusieurs petites requêtes grâce au curseur renvoyé par Twitter dans chacune d’entre elles. Le curseur de Twitter nous indique qu’il est à la fin d’une requête quand il est égal 0. La solution est donc de créer une boucle basée sur ce principe.

Pour démarrer votre boucle de requêtes, définissez le curseur à -1.
$cursor = -1;

Et créez ensuite votre boucle basée sur ce principe, comme l’exemple suivant qui affiche quelques informations des membres d’une liste :
while ( $cursor != 0 ) :
$req_members = $twitterconn->get("https://api.twitter.com/1.1/lists/members.json?slug=" . $twitter_liste . "&owner_screen_name="
. $twitter_account . "&cursor=" . $cursor);
$members = $req_members->users;
foreach ( $members as $member ) :
// Affichez l'url de l'image du membre
echo $member->profile_image_url;
// Affichez son nom
echo $member->screen_name;
// Affichez sa description
echo utf8_decode($member->description);
// Affichez son nombre d'abonnements
echo $member->friends_count;
// Affichez son nombre d'abonnés
echo $member->followers_count;
endforeach;
$cursor = $req_members->next_cursor_str;
endwhile;

Et voilà, tous les membres de votre liste s’affichent ! J’espère que ce petit tutoriel sera utile à certains d’entre vous :)

Téléchargez les fichiers sources

Ressources utiles :
Liste des librairies OAuth pour pouvoir utiliser la Twitter API
Zoom sur la fonction Twitter pour lister les membres

Laisser un commentaire

Votre commentaire sera publié sans modération initiale et modéré par la suite. Merci de rafraîchir la page pour afficher votre commentaire. Votre adresse de messagerie ne sera pas publiée.