C'est au printemps 2007, lors de la conférence Facebook F8, que Mark Zuckerberg a introduit la notion de social graph. Beaucoup d'encre a coulé sur le sujet mais, curieusement, il ne me semble pas que quiconque ait fait la simple démarche d'aller compulser les instructions techniques de Facebook permettant de l'exploiter.
Il est vrai que c'est en anglais et que cela s'adresse aux développeurs. Il n'en reste pas moins que c'est là que tout se joue. Explorons la chose.
Une API
Le document dont je vais donc traiter s'intitule Graph API overview : c'est un résumé des possibilités offertes par l'API du social graph. Une API est un jeu d'instructions fourni par une application pour que des applications tierces puissent l'utiliser. Par exemple, l'API de Google Maps, l'application de cartographie de Google, permet à Yelp d'afficher les restaurants critiqués par ses utilisateurs sur la carte de Google.
Le social graph
Mais qu'est-ce que le social graph ? Le document commence par répondre à cette question.
At Facebook's core is the social graph; people and the connections they have to everything they care about.
Le social graph est la colonne vertébrale de Facebook ; ce sont les gens et leurs liens avec ce à quoi ils tiennent.
Le document précise ensuite que le social graph est constitué :
- d'objets : personnes, photos, événements, pages, groupes, messages, vidéos…
- et du lien qui les unit : amitié, contenu partagé, "like"…
Objets
Tout objet possède un identifiant unique (ID). À chaque objet sont attachées des informations. Une application tierce peut lire les découvrir par le moyen de la simple instruction : https://graph.facebook.com/ID. Par exemple, https://graph.facebook.com/19292868552, où l'ID désigne une page Facebook, donne :
"id": "19292868552", "name": "Facebook Platform", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/hs451.snc4/50414_19292868552_7650_s.jpg", "link": "http://www.facebook.com/platform", "category": "Technology", "website": "http://developers.facebook.com", "username": "platform", "founded": "May 2007", "company_overview": "Facebook Platform enables anyone to build social applications on Facebook and the web.", "mission": "To make the web more open and social.", "products": "Facebook Application Programming Interface (API)\nFacebook Query Language (FQL)\nFacebook Markup Language (FBML)\nFacebook JavaScript (FBJS)\nFacebook Connect\n", "fan_count": 1032413Le nom courant peut suffire. Par exemple, https://graph.facebook.com/youssefrahoui donne :
"id": "682819385", "name": "Youssef Rahoui", "first_name": "Youssef", "last_name": "Rahoui", "link": "http://www.facebook.com/youssef.rahoui", "gender": "male", "locale": "en_US"
Connections
Facebook appelle connection le lien entre les objets. Ces connections sont de différents types : like, amitié, appartenance à un groupe, participation à un événement, etc. L'API permet de connaître les types de connections de n'importe quel objet par une simple instruction : https://graph.facebook.com/ID/CONNECTION_TYPE. Par exemple, https://graph.facebook.com/youssefrahoui/friends donne :
{
"name": "Roxanne Varza",
"id": "2500257"
},
{
"name": "Thomas Hauchecorne",
"id": "500066071"
},
C'est (un extrait de) ma liste d'amis.
Autorisation
Nous venons de voir que tout dans Facebook est identifié de façon unique et que l'API permet d'y accéder. Cela ne se fait toutefois pas librement. Il faut à cet effet une autorisation, du moins pour tout ce que Facebook ne considère pas comme information publique.
Qu'est-ce que Facebook considère comme tel ? Principalement le nom, le prénom, le sexe et l'ID de l'internaute. Essayez donc la requête https://graph.facebook.com/XY avec X et Y le prénom et le nom de votre choix.
Pour les autres informations, il faut une autorisation. Sans entrer dans les détails, disons qu'il y a plusieurs moyens de solliciter cette autorisation, le plus connu étant Facebook Connect. Du moment que le membre vous donne sont autorisation, vous accédez au minimum à son nom, sa photo de profil, son sexe, ses réseaux (université, entreprise…) ainsi qu'à sa liste d'amis, pour lesquels vous récupérez les mêmes informations.
Mais vous pouvez solliciter un accès plus étendu. Par exemple, Plancast me demande l'autorisation de m'envoyer des e-mails, de publier sur mon mur, d'accéder à toutes les informations de mon profil, y compris lorsque je ne suis pas en train d'utiliser ce service.
Les pouvoirs de l'API
Lire
Vous pouvez lire, sous réserve d'autorisation donc, le contenu de n'importe quel objet.
Vous pouvez également connaître, par une simple requête, toutes les connections d'un objet via son ID. Par exemple, pour l'événement Facebook Developer Garage qui s'est tenu à Austin :
Vous pouvez ainsi savoir qui a été invité, qui a décliné l'invitation, les informations diffusées, les photos publiées, etc.Enfin, il faut savoir que du moment que le membre Facebook modifie ses informations, votre application peut en être automatiquement informée."name": "Facebook Developer Garage Austin - SXSW Edition",
"metadata": {
"connections": {
"feed": "http://graph.facebook.com/331218348435/feed",
"picture": "https://graph.facebook.com/331218348435/picture",
"invited": "https://graph.facebook.com/331218348435/invited",
"attending": "https://graph.facebook.com/331218348435/attending",
"maybe": "https://graph.facebook.com/331218348435/maybe",
"noreply": "https://graph.facebook.com/331218348435/noreply",
"declined": "https://graph.facebook.com/331218348435/declined"
Chercher
Vous pouvez rechercher un terme dans n'importe quel objet public du social graph. Voulez-vous récupérer tous les publications murales (wall post) contenant le terme Kasparov ? Voici la requête : https://graph.facebook.com/search?q=kasparov&type=post. Les fan pages dédiées à John Coltrane ? https://graph.facebook.com/search?q=johncoltrane&type=page. Etc. Cela fonctionne également pour :
- les personnes, et vous accédez par exemple à celles qui se nomme Joël
- les événements, et vous découvrez les événements liés à la philatélie
- les groupes, par exemple ceux traitant de boudhisme
- les lieux et, chose fantastique, au moyen par exemple de cette requête (où latitude et longitude figurent), vous avez accès à tous les cafés à 1000 miles à la ronde dans telle zone de San Francisco
- et enfin les checkins, et là, pour un lieu donné (restaurant, bar…), vous pouvez savoir qui s'y trouve (non fonctionnel cela dit dans la documentation de Facebook) !
Publier
Vous pouvez publier des informations au nom de l'utilisateur Facebook qui vous y a autorisé. Vous pouvez ainsi publier un message sur son mur, commenter un message donné, "liker" un article, publier un lien sur son profil, créer un événement, créer un album photo, y ajouter des photos, publier un checkin, etc.
Supprimer
Vous pouvez supprimer la plupart des objets du social graph.
Statistiques
Vous avez accès aux données démographiques des utilisateurs de votre application. Vous savez également, combien ils sont, combien sont actifs, comment ils intéragissent avec elle (lecture, partage, like…), etc. Cela vaut pour n'importe quelle période de temps.
En conclusion, le social graph de Facebook est à peu près entièrement accessible et programmable. Les possibilités marketing sont vertigineuses. Avec leur autorisation, vous pouvez utiliser la plupart des informations de vos utilisateurs, de celles de leurs amis, communiquer avec eux et même agir en leur nom.