API Open Graph Facebook
Graph API
L'API

Avant de voir concrètement comment fonctionnement l'API proposé par Facebook, commençons par définir plus précisèment le Social Graph. Facebook par du principe qu'il est possible de tout représenter sous formes d'objets et de connexions. Un exemple de la vision du Social Graph :
- Objets : personnes, photos, événements, pages, groupes, messages, vidéos…
- Connexion : amitié, contenu partagé, "like"
Par soucis de simplicité, Facebook ne propose qu'un seul point d'entrée :
http://graph.facebook.com
Le parcours du Social Graph est ensuite tout aussi simple. Cela se fera pas identifiant d'objet et par définition de connexion :
http://graph.facebook.com/identifiant/connexion
L'identifiant
L'identifiant permet de définir de façon unique un objet dans l'API Facebook. C'est une valeur numérique incrémentée à chaque création d'un nouvel objet qu'il s'agisse d'un profil, d'une page, d'une application, etc.
Par exemple, l'utilisation de l'url ci-dessous permet d'accéder aux informations publiques que Mark Zuckerberg :
http://graph.facebook.com/68310606562
Voici le résultat obtenu au format JSON :
{ "id": "68310606562", "name": "Mark Zuckerberg", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/50270_68310606562_2720435_s.jpg", "link": "http://www.facebook.com/markzuckerberg", "category": "Public figure", "likes": 3711466, "website": "www.facebook.com", "username": "markzuckerberg", "personal_interests": "openness, making things that help people connect and share what's important to them, revolutions, information flow, minimalism\n\n\n" }
Les membres de Facebook peuvent également choisir une chaîne de caractère permettant de créer un alias identifiable par l'homme. Mark Zuckerberg a tout simplement choisi son nom :
http://graph.facebook.com/markzuckerberg
Nous pouvons voir que cette requête retourne bien la même réponse :
{ "id": "68310606562", "name": "Mark Zuckerberg", "picture": "http://profile.ak.fbcdn.net/hprofile-ak-snc4/50270_68310606562_2720435_s.jpg", "link": "http://www.facebook.com/markzuckerberg", "category": "Public figure", "likes": 3711466, "website": "www.facebook.com", "username": "markzuckerberg", "personal_interests": "openness, making things that help people connect and share what's important to them, revolutions, information flow, minimalism\n\n\n" }
Si nous lisons la réponse, nous remarquons que l'identifiant personnalisé choisi par les membres de Facebook est enregistré comme "username".
La connexion
Nous pouvons ensuite partir de cet identifiant et de l'objet qu'il désigne pour accéder aux autres objets par l'intermédiaire des connexions.
Voici quelques exemples :
Pour accéder à la liste des amis d'une personnes...
http://graph.facebook.com/markzuckerberg/friends
Pour accéder à la liste de qu'une personne aime...
http://graph.facebook.com/markzuckerberg/likes
Pour accéder à la liste des vidéos postées par une personne...
http://graph.facebook.com/markzuckerberg/videos
Biensûr, la précision des informations retournées par l'API dépendent des permissions que nous avons sur l'objet initial. Dans mon cas, je ne suis pas amis avec Mark Zuckerberg, les requêtes précédentes ne me retournerons rien d'autres que :
{ "error": { "type": "OAuthException", "message": "An access token is required to request this resource." } }
Outils Complémentaires
Real Time
En utilisant le Graph API et les permissions que vous avez sur les différents objets du Social Graph, vous pouvez avoir une copie partielle du Graph de Facebook. Les utilisateurs s'inscrivent sur votre site avec leur compte Facebook. Vous pouvez ainsi récupérer les informations de ce membre comme son nom, prénom, sa photo de profil.
Mais quoi faire lorsque le membre mais à jour sa photo de profil par exemple? Jusqu'ici, les développeurs avaient pour habitude de requêter régulièrement les données de Facebook pour mettre à jour leurs bases de données en cas de changement. Beaucoup de ces requêtes sont inutiles puisque la plupart du temps, aucune donnée n'est modifiée.
Pour remédier à ce problème, Facebook a mis en place le Real Time. Ce n'est plus à vous de demander à Facebook si une donnée à changée mais c'est Facebook qui vous informera de chaque modification en temps réel. Il est ainsi plus facile d'avoir une copie locale up-to-date d'une partie de Facebook.
Ce n'est pas seulement un outil pour les développeurs mais c'est également un outil pour les utilisateurs. En effet, si je fais une mise à jour de mon profil Facebook, j'aimerais que tous les sites, sur lesquels j'utilise mon compte Facebook pour me connecter, soient également mis à jour. J'ai ainsi une centralisation de mon identité numérique et une modification sur mon compte Facebook se répercutera automatiquement sur les autres sites.
Oauth 2.0

Facebook utilise maintenant une technologie connue pour la gestion de l'authentification : Oauth 2.0. Ils ont choisi cette technologie pour deux raisons :
- c'est un standard IETF connu par de nombreux développeurs,
- et pour les autres, c'est une technogie compréhensible en 5 minutes.