Facebook, API, Page – Parcourir et réutiliser les données d’une page Facebook

Le paradoxe de Facebook est autant le réseau est ouvert à tous, libre à vous de vous enregistrer, autant l’API est « fermé ». Il existe en effet des pans entiers de l’API qui ne sont utilisables que si selon les mots même de Facebook, vous faites partis du « Public Content Solutions program ».

A n’en pas douter cette « fermeture » est délibérée mais on peut se demander légitimement : quel est le but recherché ? Est-ce pour créer un réseau d’entreprises partenaires qui monétisent les usages de Facebook en se chargeant des développements autour de l’API et du même coup soulage Facebook du soin de promouvoir l’usage de son API. Sans doute ! Toutefois, on ne peut que déplorer que pour des utilisateurs/développeurs, toutes les fonctionnalités comme celles du « Hashtag Counter », « Keyword Insights » ou enfin des « Trends » soient à ce point verrouillées. A l’inverse, Twitter offre une API beaucoup plus accessible et malléable. Conclusion, si vous êtes amené(e)s à travailler avec l’API de Facebook, vous vous heurterez rapidement à cette fin de non-recevoir : « This API is restricted to partners in the Public Content Solutions program. » donc prudence.

Car, c’est bien à cette limite à laquelle vous pourrez heurter pour un projet dont le besoin semblait simple sur le papier tout au moins. En l’espèce, rapatrier tout le contenu, possédant un hashtag Facebook spécifique, publié par des contributeurs « whitelistés ».

Pour l’ensemble de nos exemples de requêtes, on s’est permis d’utiliser l’access_token de la page Smashing Magazine, le célébrissime site « For Professional Web Designers and Developers » www.smashingmagazine.com

V1 vs V2

Il y a eu un gros changement de la version 1 à la version de l’API Facebook. Il est certain que les requêtes de recherche sur des hashtags un peu « à la TW » semble déprécié. Pour info, %23 signifie #. Ce genre de requête est sujet désormais sujet à condition : « If you app was active before 4/30/2014 you can use API v1.0 until 4/30/2015. Otherwise you have to use API v2.0 which don’t have post search »

Sur une version différente de la V2
Il est toujours possible ce type de requête mais pour combien de temps. https://graph.facebook.com/search?q=%23tech&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Sur la V2
Sur ce type de requête, vous allez obtenir comme résultat un message d’erreur « Post search has been deprecated ».
https://graph.facebook.com/v2.2/search?q=%23tech&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Les fonctionnalités inaccessibles

Les modules hashtag_counter, Keyword Insights ou la Trends API ne sont pas accessibles au commun des mortels. C’est bien dommage car ces fonctions pourraient offrir un bon potentiel pour travailler avec l’API Facebook.

Une étude de cas à l’aide la page de la page de smashingmagazine

Etant donné que l’access_token de smashingmagazine est disponible, nous sommes permis de faire quelques essais de requêtes sur l’API Facebook.

Une requête sur les messages uniquement
https://graph.facebook.com/v2.2/smashmag/posts?fields=message&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Une requête sur les messages avec seulement le status_type=wall_post
https://graph.facebook.com/v2.2/smashmag/posts?fields=message&status_type=wall_post&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Une requête un peu plus complète incluant message,story,shares,likes,comments
https://graph.facebook.com/v2.2/smashmag/posts?fields=message,story,shares,likes,comments&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Une requête complète qui rapatrie tout
https://graph.facebook.com/v2.2/smashmag/posts?&access_token=553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw

Une fois votre requête choisi, vous récupérez un flux JSON qui vous permettra ensuite de manipuler les données, ce qui éminemment commode pour placer ensuite ce contenu dans un site ou une application, attention tout de même au temps de réponse de l’API Facebook, cela peut vous jouer des tours en terme d’affichage du contenu.

 
	<?php
 
 
		/* VALUES */
		/*
		Example made for the smashng magazine on facebook
		See https://www.facebook.com/smashmag
		*/
 
 
		/* Begin graph url for FB */
		define ('_GRAPH_FB_', 'https://graph.facebook.com/');
 
		/* Page ID or username */
		define ('_PAGE_ID_', 'smashmag');
 
		/* Page Access Token */
		define ('_PAGE_ACCESS_TOKEN_', '553435274702353|OaJc7d2WCoDv83AaR4JchNA_Jgw');
 
 
 
	$page_posts = file_get_contents(''._GRAPH_FB_.''._PAGE_ID_.'/posts?fields=message&access_token='._PAGE_ACCESS_TOKEN_.''); 
 
					$pageposts = json_decode($page_posts); 
 
					/* For debug purpose */
					// var_dump ($pageposts);
 
 
					/*
				print ('<ol>');
					foreach ($pageposts->data as $fppost) {
						if (property_exists($fppost, 'message')) { 
							print ('<li>');
	                 print $fppost->message.'</br>';
					 print ('</li>');
						}
					 }
				print ('</ol>');
				*/
 
					print ('<ol>');
					foreach ($pageposts->data as $fppost) {
 
							// var_dump ($fppost);
 
					print ('<li>');
 
					print ('id -> '.$fppost->id.'');
					print('</br>');
 
					print ('message -> '.$fppost->message.'');
					print('</br>');
 
					print ('picture -> '.$fppost->picture.'');
					print('</br>');
 
					print ('category -> '.$fppost->from->category.'');
					print('</br>');
 
					print ('name -> '.$fppost->from->name.'');
					print('</br>');
 
					print ('link -> '.$fppost->link.'');
					print('</br>');
 
					print ('status_type -> '.$fppost->status_type.'');
					print('</br>');
 
					print ('</li>');
					print('<br><br>');
 
				 }//EOL
				print ('</ol>');
 
 
 
 
	?>

En savoir plus