Hack et autres détournementsphp

Le principe général est d’éviter tout ce qui n’est pas officiel et les détournements d’utilisation lorsque vous utilisez une API. Pourquoi? Tout simplement parce que c’est risqué !

Il est vrai qu’il est facile de dire “fais pas ci fais pas ça” encore faut-il trouver des alternatives et parfois il n’y en a pas tellement. Avec Twitter, c’est souvent la foire au n’importe quoi avec des codes alambiqués ! Non pas que les développeurs aiment le danger mais il faut bien mettre en place la fonctionnalité.

Or quand on se connecte à l’API on peut déjà obtenir un bon paquet de données mais voilà celles qui intéressent tout le monde et bien Twitter se les garde précieusement ou les autorisent pour des applications mastodontes du marché.

Compter, compter, compter…

Avec le fameux compteur de Tweets on voit souvent ce genre d’URLs :

http://urls.api.twitter.com/1/urls/count.json

Le problème est que ces URLs sont clairement réservées aux boutons Twitter officiels donc ce n’est pas valable et si Twitter décide de couper le robinet vous êtes cuit. La solution est de passer par les APIs Streaming et de compter soi-même les occurrences.

Source

On remarque en plus que l’URL n’est pas versionnée (l’API est passée à la version 1.1) ce qui est déjà un indice important pour ne pas l’utiliser.

User

Publié sur un blog de premier plan anglosaxon, l’astuce qui utilise le endpoint suivant :

https://twitter.com/users/username.json

est à oublier rapidement. D’ailleurs, Twitter a pu entre temps couper le robinet justement… J’entends bien que l’auteur ait voulu faire une démo de wp_remote_get() mais ce n’est pas une raison. Si on veut récupérer le nombre de followers, de followings et de Tweets, mieux vaut passer par là : article dédié.

Sessions Twitter

Je faisais joujou ce matin avec les referer pour afficher un message aux visiteurs venus de Google et de certains sites web (totalement gadget je vous l’accorde) et j’ai essayé de mettre en place une astuce googlée juste pour tester si cela marchait :

https://twitter.com/sessions/etc...

Non ! La vie c’est pas comme ça. Déjà le principe de mettre en session pour un referer me semblait HS pour le peu que je voulais faire. Une solution plus logique aurait pu consister à envoyer un cookie et glisser un paramètre dans mes URLs.

Détournement et non respect des règles

Just because you can does not mean you should
Quand on veut on peut mais pas toujours en fait. En tant que développeurs, nous devons respecter certaines règles lorsque nous utilisons des APIs comme celles de Twitter. Twitter est d’ailleurs plutôt clair sur la démarche à suivre :

Vous pouvez consulter ce cas concret pour plus de détails en Français.

Conclusion

N’utilisez pas d’URLs non versionnées et de endpoints non répertoriés sur cette page. Même si cela vous permet d’obtenir vos données, le code que vous mettez en place est précaire et peut donc sauter à tout moment. Ne détournez pas les usages de l’API, Twitter ne vous laissera pas indéfiniment faire ce que vous souhaitez si vous enfreignez ses règles.