Introduction à Twitter4J
Les APIs Twitter
Twitter propose plusieurs APIs permettant d’accéder à ses services : cela va des opérations de consultation de comptes (tweets, listes d’amis et de followers, etc) aux opérations de modification (supprimer des amis, poster des tweets, etc).
REST APIs
Un ensemble d’APIs accessibles par REST. Celles-ci fonctionnent avec un accès OAuth associé à votre compte et retournent des résultats en JSON. Les APIs sont très complètes et vous permettront des opérations de consultation sur tous les comptes (informations publiques s’il ne s’agit pas de votre compte), et des opérations de modification sur votre compte.
Attention, Twitter impose un quota (détails) sur le nombre d’appels par heure. Certaines fonctions sont par exemple limitées à 15 appels par heure. Lorsqu’un quota est atteint, l’API lève une exception et ne débloque l’accès à la fonction qu’au bout d’une heure. Veuillez consulter la documentation pour connaître les quotas propres à chaque méthode.
Streaming APIs
Certaines APIs seraient difficilement exploitables en respectant les quotas d’appels. Celles-ci sont donc accessibles sans limite en maintenant une connexion à Twitter. Consultez la documentation pour en savoir plus.
La librairie Twitter4J
Introduction
Twitter4J est une librairie facilitant l’utilisation des API Twitter (autant REST que Streaming).
Ecrite en Java5, elle peut fonctionner sur une JVM classique ainsi que sur Android. La version 1.1 des APIs Twitter est supportée (c’est suffisant), gère OAuth, et ne dépend d’aucune librairie tierce.
Elle est disponible sur le repository Maven Central :
<dependency> <groupId>org.twitter4j</groupId> <artifactId>twitter4j-core</artifactId> <version>4.0.4</version> </dependency>
Cas pratique
Nous allons utiliser Twitter4J pour effectuer l’opération suivante sur notre compte : supprimer nos friends (ceux que l’on suit) qui ne sont pas nos followers (ceux qui nous suivent). En d’autres termes, arrêter de suivre ceux qui ne nous suivent pas.
Cela peut se révéler utile car le nombre maximum de friends est fonction du nombre de followers. Une société désirant optimiser ses friends devra donc régulièrement nettoyer ses relations.
1) L’algorithme
Nous allons :
- nous connecter à notre compte via OAuth
- lister tous nos followers
- lister tous nos friends et arrêter de suivre ceux qui ne sont pas aussi nos followers
2) OAuth
Au préalable, il est nécessaire d’obtenir un accès OAuth pour utiliser les APIs Twitter. La procédure est expliquée sur la documentation développeurs. Je vais vous épargner sa lecture et vous résumer les étapes à suivre :
- rendez-vous sur https://apps.twitter.com et authentifiez-vous avec votre compte Twitter
- créez une nouvelle application (le bouton en haut à droite « Create New App ») et complétez le formulaire qui s’affiche
- un récapitulatif de l’application s’affiche, avec un lien « (manage keys and access tokens) » en face de « Consumer Key » : cliquez dessus
- notez vos « Consumer Key » et « Consumer Secret »
- en bas de page, cliquez sur le bouton « Create my access token »
- notez vos « Access Token » et « Access Token Secret »
Les Consumez Key, Consumer Secret, Access Token et Access Token Secret sont les quatre paramètres qui vous permettront de vous authentifier via OAuth. Selon les droits que vous avez donné à l’application (Read Write par défaut), cet accès vous permettra d’accéder autant en lecture qu’en écriture à votre compte Twitter. Il vous donnera aussi un droit en lecture (partielle) aux comptes des autres usagers. Gardez donc bien ces informations secrètes.
3) Le code
- se connecter en OAuth :
import java.util.*;
import twitter4j.*;
...
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("Your Consumer Key Here")
.setOAuthConsumerSecret("Your Consumer Secret Here")
.setOAuthAccessToken("Your Access Token Here")
.setOAuthAccessTokenSecret("Your Access Token Secret Here");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter tw = tf.getInstance();
- lister ses followers et friends et chercher les friends à supprimer.
Vous remarquerez que les APIs listant les friends et followers sont paginables. Pensez à consulter la documentation pour connaître la taille maximale d’une page et ainsi préserver votre quota d’appels) :
String twAccountName = "Notre ScreenName Twitter";
// Récupérer nos followers.
List<String> followers = new ArrayList<>(256);
PagableResponseList<User> followersList;
int countPages = 0;
long cursor = -1;
do {
followersList = tw.friendsFollowers().getFollowersList(tw, twAccountName, cursor, 200);
for (User user : followersList) {
followers.add(user.getScreenName());
}
} while ((cursor = followersList.getNextCursor()) != 0 && ++countPages < 15);
// Récupérer nos friends...
PagableResponseList<User> friendsList;
countPages = 0;
cursor = -1;
do {
friendsList = tw.friendsFollowers().getFriendsList(tw, twAccountName, cursor, 200);
for (User user : friendsList) {
// ...et arrêter de suivre les friends qui ne nous suivent pas
String friendScreenName = user.getScreenName();
if (!followers.contains(friendScreenName)) {
tw.destroyFriendship(friendScreenName);
}
}
} while ((cursor = friendsList.getNextCursor()) != 0 && ++countPages < 15);
Notre compte a maintenant arrêté de suivre les friends qui ne sont pas des followers. La suppression de ces relations est effective immédiatement et n’est pas annulable.
Conclusion
Twitter4J est une librairie accessible et prend en charge l’essentiel des APIs Twitter. Elle fonctionne autant sur PC que sur smartphone. Que demander de plus ?
Pour ceux qui voudraient aller plus loin dans les API des réseaux sociaux, sachez qu’il existe un équivalent de cette librairie pour Facebook : Facebook4J. Les interfaces sont étonnamment proches, vous ne serrez pas perdu.
Ce sujet vous intéresse ?