Facebook : Lister les pages que vous administrez

Je ne vais pas revenir sur le BA-BA de la création d'une application pour facebook, mais partir du principe qu'elle a déjà été réalisée. Pour travailler avec vos pages, facebook, il faut bien sûr que votre application ait l'autorisation nécessaire de le faire. Si ce n'est pas le cas, il vous suffit d'ajouter l'autorisation. Il faut donc ajouter manage_pagesdans le champ Extended Permissions de  votre application. POur que la nouvelle autorisation soit prise en compte, il faudra vous déconnecter, puis vous reconnecter à facebook.

 

Commencez par configurer les accès à l'api de Facebook via le PHP SDK (à récupérer sur GitHub) :

 $config = array( 
 'appId' => APP_ID, 
 'secret' => APP_SECRET, 
 'scope' => 'manage_pages' 
 );

On appelle la class, récupère notre user_id ainsi que l'indispensable access_token :

$facebook = new Facebook($config); 
$user_id = $facebook->getUser(); 
$access_token=$facebook->getaccessToken();

Si on a un user_id, on considère que l'utilisateur est bien connecté à FB, et on enchaîne :

if($user_id) { 
	try {
$pages = $facebook->api(array(
'access_token'=>$access_token,
'method' => 'fql.query',
'query' => 'SELECT page_id FROM page_admin WHERE uid = me() AND type!="APPLICATION"'
)); 
	if($pages){ 
			foreach($pages as $k=>$v) { 		
			$fbPageData=$facebook->api('/'.$v['page_id'].'?fields=name'); 
			$fbPageName=$fbPageData['name'];
echo ''.$fbPageName.''; 
			} 
		} 
	}

Quelques explications :  FQL, alias Facebook Query Language, est un language permettant de faire des requêtes sur les données utilisateur de Facebook comme on ferait des requêtes sur une base de données SQL. Les données retournées sont au format json. Cela permet de se passer de l'API Graph de Facebook. Dans l'exemple ci-dessus, j'ai juste récupérer les ID des pages FB que j'administre, en excluant les applications, puis avec l'ID des pages ($v['page_id']), je récupère les nom de chacune des pages. Cette boucle affiche donc le nom des pages, mais on peut simplement placer les ID et nom de pages dans un formulaire par exemple.

} 
catch(FacebookApiException $e) {
			$login_url = $facebook->getLoginUrl(array('scope'=>'manage_pages'));
			echo 'Please <a href="' . $login_url . '">login To FB.</a>';
			error_log($e->getType());
			error_log($e->getMessage());

		}
	} else {

      // No user, print a link for the user to login
      $login_url = $facebook->getLoginUrl(array('scope'=>'manage_pages'));
      echo 'Please <a href="' . $login_url . '">login.</a>';

    }

Cette dernière partie n'a probablement pas besoin d'explication. gestion des exceptions, log des erreurs, display d'un lien de login/logout, etc ...

Pour clarifier tout cela, voici le code final (à n'utiliser qu'en environment local, pas en production ^^)

$config = array( 
 'appId' => YOUR_APP_ID, 
 'secret' => YOUR_APP_SECRET, 
 'scope' => 'manage_pages' 
 );
$facebook = new Facebook($config); 
$user_id = $facebook->getUser(); 
$access_token=$facebook->getaccessToken();
if($user_id) { 
	try {
		$pages = $facebook->api(array(
		'access_token'=>$access_token,
		'method' => 'fql.query',
		'query' => 'SELECT page_id FROM page_admin WHERE uid = me() AND type!="APPLICATION"'
		)); 
		if($pages){ 
			foreach($pages as $k=>$v) { 		
			$fbPageData=$facebook->api('/'.$v['page_id'].'?fields=name'); 
			$fbPageName=$fbPageData['name'];
			echo ''.$fbPageName.''; 
				} 
			}
	}catch(FacebookApiException $e) {
			$login_url = $facebook->getLoginUrl(array('scope'=>'manage_pages'));
			echo 'Please <a href="' . $login_url . '">login To FB.</a>';
			error_log($e->getType());
			error_log($e->getMessage());

	}
} else {

      // No user, print a link for the user to login
      $login_url = $facebook->getLoginUrl(array('scope'=>'manage_pages'));
      echo 'Please <a href="' . $login_url . '">login.</a>';

}

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Vous pourriez aussi être intéressés par

Sauvegarde automatique de Mysql

Système de sauvegarde automatique des bases de données MySQL. automysqlbackup sauvegarde toutes vos tables de données et les conservent plusieurs jours, semaines ou mois, selon vos besoins

Août 05 2015

Créer un serveur de sauvegarde

Si la plupart des hébergeurs proposent des solutions de sauvegarde dans leurs offres, ces sauvegardes s'avèrent souvent insuffisantes, nécessitant la mise en place d'un serveur de sauvegardes incrémentales externe. Tout ça pour à peine 5 € euros par mois

Fév 23 2015