Les données clés de l’API facebook avec le FQL
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
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 :
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.







septembre 17th, 2009 at 7 h 58 min
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
octobre 22nd, 2009 at 3 h 37 min
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