Vous êtes ici : Accueil / 2011 / Mai / L'API Twitter et la création d'une application d'autofollow

L'API Twitter et la création d'une application d'autofollow

écrit le 19/05/2011 Par Yohann Gabory
Cet article, après un rapide tour d'horizon de l'API Twitter et du processus d'authentification OAuth explique comment créer une commande Django d'auto-follow et d'auto-unfollow

OAuth

Qu'est ce que OAuth ?PI

OAuth (Open Authentification) est un protocole libre de gestion des autorisations sur une API. Elle permet d'utiliser de façon sécurisée une API aussi bien pour une application de bureau que pour une application web. OAuth est maintenant un protocole très utilisé : Facebook, Twitter, Google Apps. 

Concept de base de l'authentification OAuth

L'authentification OAuth repose sur le concept de Consumer (celui qui utilise l'API) et de Service Provider (celui qui sert l'API). C'est donc une action à trois intervenants qui va se dérouler tout au long du processus d'authentification. Vous pouvez en apprendre plus en suivant ce très bon guide : http://hueniverse.com/oauth/.

Création d'une application Twitter

Pour pouvoir dialoguer librement avec l'API Twitter, il faut auparavant créer une application Twitter, ce qui se fait très simplement en se rendant sur https://dev.twitter.com/apps/new et en remplissant le formulaire.

Cela va vous permettre d'obtenir plusieurs choses dont vous allez avoir besoin pour la suite :

  • la consumer_key
  • la consumer secret_key

Lier un compte à une application Twitter

C'est le cœur du process OAuth.

Le principe est de permettre à une application donnée de se connecter à une API comme si elle était l'utilisateur lié.

  • l'application se connecte à l'API pour demander un unauthorized_access_token en fournissant sa consumer_key et sa consumer_secret_key
  • l'API renvoie un unauthorized_access_token à l'application
  • l'application redirige l'utilisateur vers l'API en lui fournissant en paramètre l'unauthorized_access_token et une url de callback (l'utilisateur ne manipule donc jamais la consumer_key et la consumer_secret_key)
  • l'utilisateur, sur la page de l'API, va donc autoriser l'accès
  • l'API renvoie l'utilisateur sur l'url de callback donnée en paramètre et fournissant un access_token et un secret_access_token
  • il est à rappeler qu'un access_token et un secret _access_token seuls ne servent à rien, ils sont directement liés à l'application qui en a fait la demande. Dans le cas où cette dernière action serait compromise, il n'y a donc aucun risque d'utilisation malveillante. Et c'est tout le concept de Oauth : fournir un moyen de connexion sécurisé à la fois pour l'application et pour l'utilisateur de l'application

Les appels de l'API Twitter : utilisation des tokens pour accéder aux ressources de l'API

Maintenant, en supposant que l'utilisateur vous a donné les autorisations nécessaires, vous avez la consumer_key et la consumer_secret_key, l'autorisation_key, l'access_token et le secret_access_token.

  • premièrement, on va demander un access_token à l'API en utilisant les 4 token que l'on a reçus auparavant dans une requête cryptée
  • l'API nous renvoie un access token valable pour une requête
  • nous utilisons ce token pour faire notre requête

Une application d'exemple : autofollow

Faire une demande d'autorisation

Comme nous l'avons vu précédemment, on va devoir demander à l'utilisateur de se connecter à Twitter pour autoriser notre application. Voici un petit script qui utilise la bibliothèque Python Tweepy pour faire cela en ligne de commande. Vous trouverez la bibliothèque Tweepy ici : http://code.google.com/p/tweepy/

#!/usr/bin/env python
import tweepy
CONSUMER_KEY = 'la consummer key de votre application'
CONSUMER_SECRET = 'la consumer secret de votre application'
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth_url = auth.get_authorization_url()
print 'Please authorize: ' + auth_url
#affiche l'url à laquelle se connecter pour autoriser l'application verifier = raw_input('PIN: ').strip()
# le code PIN dans le cas d'une application de bureau auth.get_access_token(verifier)
#les token dont nous avons besoin print "CONSUMER KEY = %s" % CONSUMER_KEY
print "CONSUMER_SECRET = %s" % CONSUMER_SECRET
print "ACCESS_KEY = '%s'" % auth.access_token.key
print "ACCESS_SECRET = '%s'" % auth.access_token.secret

Utiliser l'API Twitter

Nous avons désormais tout ce qu'il nous faut pour commencer à utiliser l'API Twitter. Pour ce faire, nous allons utiliser python-twitter qui est une bibliothèque traduisant en fonctions Python les appels à l'API Twitter. Vous pourrez vous la procurer ici : http://code.google.com/p/python-twitter/.

Initialisation

Pour commencer, il faut créer un objet API. Cet objet, vous l'aurez deviné est créé grâce aux 4 token que nous avons obtenu tout à l'heure :

>>>import twitter
>>>api = twitter.Api(
consumer_key='votre consumer_key',
consumer_secret='votre consumer secret',
access_token_key='l'access token',
access_token_secret='le secret access token'
)

Obtenir des informations

À partir de maintenant, on peut commencer à faire des requêtes. Essayons de voir si on est bien reconnu par Twitter :

>>>api.VerifyCredentials(api)

À partir de maintenant, on peut évidemment commencer à utiliser cet objet :

>>> user = api.VerifyCredentials(api)
>>> user.screen_name
u'pilotsystems'

Follower un utilisateur

Pour follower un utilisateur, ce n'est pas beaucoup plus compliqué. Imaginons que vous possédez l'identifiant de l'utilisateur que vous voulez suivre :

>>> user = api.VerifyCredentials(api)
>>> api.CreateFriendship(39218245)

Conclusion

Il existe un grand nombre d'appels possibles dans l'API Twitter et beaucoup sont directement disponibles dans python-twitter. Mais il est aussi possible de reprendre le code pour ajouter les fonctions qui manquent. Le code est assez simple et bien écrit pour vous y aider.

Dans tous les cas, n'oubliez pas de visiter régulièrement http://dev.twitter.com/doc#rest-api afin de suivre les dernières évolutions de la plate-forme.

Actions sur le document