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.
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/.
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 :
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é.
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.
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
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/.
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'
)
À 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'
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)
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