Les données clés de l’API facebook avec le FQL

Les données clés de l’API facebook avec le FQL

sommaire :

  1. Les statistiques avec la table Metrics
  2. Cibler les utilisateurs avec les tables fan et groups
  3. Les permissions avec la table Permissions
 

Avec toutes les données que nous fournit l’api facebook il est facile de se perdre.
Cette article va vous aider à y voir plus clair.

Les statistiques avec la table Metrics

Si vous voulez vendre de la publicité dans votre site, ou tout simplement connaitre le traffic de votre gadget il essentiel de connaitre les statiques. Ces informations se trouvent dans la table Metrics.

Les statistiques se font sur une portion de temps. (ex : du 01/02/2009 au 01/03/2009).
Pour définir cette portion de temps à notre table Metrics, il faut définir 2 champs ; end_time et period .

end_time : la date de début de votre portion en timestamp
period : la durée en seconde de votre portion.


Les informations qui me paraisse importantes :

active_users : le nombre d’utilisateur unique
canvas_page_views : le nombre de page vue
unique_adds : le nombre de fois que votre application à été ajoutée.
unique_removes : le nombre de fois que votre application à été enlevée.
unique_blocks : le nombre de fois que votre application à été bloquée.
unique_unblocks : le nombre de fois que votre application à été débloquée.


Pour récupérer les statistiques ce n’est pas une chose aisée avec facebook.
Déjà nous somme limité dans les périodes, on a le choix entre 86400 (1 jour), 604800(1 semaine) et 2592000(1 moi).
Pour le timestamp il faut qu’il doit définit à 9 heure (j’ai pas bien compris).

C’est compliqué ? Je vais vous montrez un exemple.

$iTime = mktime(9, 0, 0, date('m')-1, date('d'), date('Y')); // il ya 1 moi en timestamp
$sQuery = 'SELECT end_time, period, active_users, canvas_page_views  FROM metrics WHERE end_time ='.$iTime.' AND period = 2592000';
$aStatInformation = $oFacebook->api_client->fql_query($sQuery);
// un affichage bête et méchant
echo'<pre>';
var_dump($aStatInformation);
echo'</pre>';

Ce code source renvoi les statistiques du moi dernier

fql

fql

Vous avez remarquez que l’on a pas récupérer ces quatre données unique_adds, unique_removes, unique_blocks, unique_unblocks.

C’est parce que facebook nous complique la tache.
En effet si on veut récupérer ces données il faut que la portion de temps soit d’un jour (et non d’un mois).
Pour récupérer ces données pour un mois on va faire un script à part :

$iDay = 1;// jour 1
$aResult = array('unique_adds' => 0,'unique_removes' => 0,'unique_blocks' => 0,'unique_unblocks' => 0);
while($iDay<31) // pour un mois
{	// on convertit notre date en time stamp
	$iTime = mktime(9, 0, 0, date('m'), date('d')-$iDay, date('Y'));
	$sQuery = 'SELECT unique_adds, unique_removes, unique_blocks, unique_unblocks  FROM metrics WHERE end_time ='.$iTime.' AND period = 86400';
	$aStatInformation = $oFacebook->api_client->fql_query($sQuery);
	if (is_array($aStatInformation)){//  on sotcke les infos
		foreach($aStatInformation[0] as $iKey => $iVal)
		{
			$aResult[$iKey]+=(int)$iVal;
		}
	}
	$iDay++;
}
// on affiche le résultat
echo'<pre>';
var_dump($aResult);
echo'</pre>';

Eh voila on à les informations qu’il nous faut :)

Cibler les utilisateurs avec les tables fan et groups

Cibler les utilisateurs et un atout essentiel si vous voulez optimiser le rendement de vos pubs.
La table fan permet de savoir quel page l’utilisateur est fan.


Voici comment faire pour récupérer ces pages. (biensur on a besoin de l’id utilisateur)

//on récupère l'id de l'utilisateur
$sUser_id = $oFacebook->user;
//récupérer les id des pages
$sQuery = 'SELECT page_id, type FROM page_fan	 WHERE uid=' . $sUser_id.;
$aUserInformation = $oFacebook->api_client->fql_query($sQuery);



Les ids des pages nous parlent pas beaucoup. Mais ce n’est pas un problème, on va utiliser une autre table
pour récupérer les informations de ces pages.
La table page est une des plus grosses tables de facebook, voici ça structure.


Si vous utilisez souvent facebook, vous savez qu’une page peut recenser tout et n’importe quoi (une entreprise, un individu, un lieu, un événement …). Il n’est pas nécessaires de récupérer toutes les données (cela risque d’alourdir votre application et votre base de données).

Dans cet exemple nous allons récupérez l’essentiel (le nom, l’image représentative,le type, les informations générales et le nombre de page)

//on récupère l'id de l'utilisateur
$sUser_id = $oFacebook->user;

//on récupère les informations importantes
$sQuery = 'SELECT name, pic, type, website, general_info,  fan_count from, website page where page_id IN (SELECT page_id, type FROM page_fan	 WHERE uid=' . $sUser_id.')';  

$aUserInformation = $oFacebook->api_client->fql_query($sQuery);

La table group va permettre de savoir tout sur les groupes de l’utilisateur en cours

Rien de particulier sur cette table, on y accède de la même manière que pour la page fan :

//on récupère l'id de l'utilisateur
$sUser_id = $oFacebook->user;

// on récupère les informations du groupe
$sQuery = 'SELECT name, pic, description, group_type, group_subtype, website from group where gid IN (SELECT gid FROM group_member WHERE uid=' . $sUser_id.')';  

$aUserInformation = $oFacebook->api_client->fql_query($sQuery);

Les permissions avec la table Permissions

Comme son nom l’indique, la table permissions va nous dire ce que notre gadget peut ou pas faire.
Dans cette table ce qui va nous intéresser, c’est de savoir si on peut leur envoyer des sms ou des mails.
ps : si on a l’autorisation, ce n’est pas une bonne raison pour faire du spam :)

Voici la requête :

//on récupère l'id de l'utilisateur
$sUser_id = $oFacebook->user;

// les permissions pour l'envoi de mail et de sms
$sQuery = 'SELECT email, sms FROM permissions WHERE uid=' . $sUser_id;  

$aUserInformation = $oFacebook->api_client->fql_query($sQuery);

Le résultat sera renvoyé sous la forme de booléen.
0 : on a pas la permission
1 : on a la permission

Pour avoir la permission il faut utiliser le fbml. plus précisément la balise <fb:prompt-permission>

L’attribut perms est obligatoir puisque c’est lui qui va définir quelle autorisation à accorder. (pour nous ça sera sms et mail)

<fb:prompt-permission perms="email">Autorisez vous l'application a envoyez des mails</fb:prompt-permission>

Si l’utilisateur clique sur le lien, une fenêtre devrait apparaître :

apifacebook

apifacebook

Voila nous avons fait le tour des données clé de l’api facebook. A travers ces exemples on a pu voir le fonctionnement de la base de données facebook. Comme je vous l’ai déjà dit, chaque donnée a son utilité, et c’est en fonction de vos projet que vous allez devoir choisir les données à récupérer. Le choix des données est une étape très importante, parce que vous pouvez manquez une information importantes ou alourdir votre base pour rien (à l’échelle de milliers d’utilisateurs, cela peut venir vite une catastrophe).


Update : J’ai mis en ligne une documentation sur le fql, si vous êtes intéressé c’est par ici


Si vous avez des questions, vous pouvez laissez un commentaire. :)

Note de l'article




1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, moyenne: 3,00 max : 5)
Loading ... Loading ...

  1. gtraxx Says:

    Bonjour très intéressant cet article, je me pose certaine question ….
    Est il possible de développer une appli facebook pour intégrer un flux ou autre chose afin de faire de la pub.
    Biensur je souhaite partager ce gadget, comment s’y prendre pour le concevoir et le partager.merci d’avance

  2. Myriam Says:

    Bonjour , j’ai une question pour vous :
    Mon amie avait des commentaires de son idole (marie-mai) sur sa page facebook , et quelqu’un l’a pirater et a supprimer les commentaires de marie-mai , mon amie est vraiment triste et je voulais savoir si il était possible de récupérer les commentaires une fois qu’ils ont été supprimés ?

    Merci beaucoup , Myriam

Donner votre avis :