Tutoriel Vidéo PHP Afficher ses derniers Tweets

Télécharger la vidéo Télécharger les sources

Dans ce tutoriel je vous propose de découvrir comment utiliser la version 1.1 de l'API Rest de Twitter afin de récupérer ses derniers tweets pour les afficher sur notre site.

Création d'une application

Avant de pouvoir commencer à interagir avec l'API de Twitter, il faudra commencer par créer une application. En effet, avec cette nouvelle version il n'est plus possible d'appeler l'API de manière publique. Il faudra nécessairement s'authentifier.

Dans notre cas, nous allons directement utiliser cette application pour récupérer les informations de notre compte. Il est donc inutile de sélectionner un Callback URL. Une fois votre application créée vous obtiendrez 2 informations importantes : une Consumer Key et une Consumer Secret

Oauth flow

Pour pouvoir interagir avec l'API il va nous falloir obtenir un token d'accès. Ce token peut être obtenu de 2 façons.

  • En demandant à l'utilisateur d'accepter que notre application accède à ses informations Twitter
  • En utilisant les identifiants de notre application pour obtenir un token d'accès correspondant à notre compte.

Dans notre cas, nous allons utiliser la seconde solution, car nous ne souhaitons pas interagir avec d'autres comptes Twitter. Nous allons donc utiliser l'Application-only authentication qui nous permet d'obtenir un token d'accès en utilisant seulement nos clefs Consumer. Il faudra alors envoyer une requête en POSTà api.twitter.com/oauth2/token en envoyant une version encodée de nos clefs (base64_encode(urlencode($consumer_key) . ":" . urlencode($consumer_secret))).

POST /oauth2/token HTTP/1.1
Host: api.twitter.com
User-Agent: My Twitter App v1.0.23
Authorization: Basic XXXXXX
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Content-Length: 29
Accept-Encoding: gzip

grant_type=client_credentials

Suite à cette requête on obtiendra un Bearer token que l'on pourra utiliser pour nos prochaines requêtes.

{"token_type":"bearer","access_token":"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%2FAAAAAAAAAAAAAAAAAAAA%3DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"}

Maintenant on peut demander à Twitter ce qui s'est passé dans notre Timeline

GET 
https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=2
Authorization: Bearer XXXXXX

Passons au PHP !

Maintenant que l'on a compris comment fonctionne l'API on va pouvoir commencer à coder. Pour interagir avec l'API nous allons utiliser la librairie twitteroauth.

// On obtient le token d'accès
$oauth = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);
$accessToken = $oauth->oauth2('oauth2/token', ['grant_type' => 'client_credentials']);
$access_token = $accessToken->access_token;

// on appel l'API
$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, null, $access_token);
$tweets = $twitter->get('statuses/user_timeline', [
    'screen_name' => $screen_name,
    'exclude_replies' => true,
    'count' => 50 // On est obligé de filtrer après coup (cf doc)
]);

// On filtre pour ne récupérer que les 3 derniers tweets
$tweets = array_splice($tweets, 0, 3);

Pensez au cache !

Attention, l'API ne peut pas être appelée de manière illimitée, il y a certaines limitations à prendre en compte. Il est donc important de mettre à cache vos tweets afin de ne pas appeler Twitter de manière trop fréquente.