Aller au contenu
elfaus

Problème API Facebook

Noter ce sujet :

Recommended Posts

Hello,



j'ai un petit soucis en essayant d'utiliser l'API de facebook (FQL) afin de récupérer les commentaires, leur id et leur auteur depuis une page.


Ce que j'ai réussi à faire sans soucis : avoir le commentaire et son id


Ce que je ne parviens pas à faire : avoir le nom d'utilisateur



Dans la mesure où il semblerait que l'API ne prenne pas en charge les jointures, je suis obligé de récupérer d'abord les commentaires, et dans chaque commentaire chercher le nom d'utilisateur en fonction de son id.



Le problème est simple : les id facebook sont des entiers long... (supérieur à 12 chiffres donc)


Et PHP s'en va me basculer ça en puissance...


Du coup, allez faire un requête du type SELECT name FROM user WHERE uid = 1.49875E+231546



Forcément l'API aime pas et m'envoie chier xD



Comment faire pour forcer le paramètre en entier long ?




// Facebook
// $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url);
// echo ('<script>top.location.href="' . $dialog_url . '"</script>');

// $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $app_id . '&redirect_uri=' . urlencode($my_url) . '&client_secret=' . $app_secret . '&code=' . $code;
// $access_token = file_get_contents($token_url);
$access_token = 'AAACEdEose0cBAFUKEs5LZBH9Vz2eWkmUzUJpdtMuPdRds3Hz50kcFcvxz5cQbr8sT6p14QfVSlgekZAsPR167854ZC3ATIx9p9nziwkUJGtOh3h5Hz2';

// Récupérons l'ensemble des commentaires de la page
$query = 'https://graph.facebook.com/fql?q=select+post_id,+message,+comments+from+stream+where+source_id=304777202963749+limit+10&access_token=' . $access_token;
$result = file_get_contents($query);
$object = json_decode($result, true);

// Analysons les posts
if (!empty($object)) {
$object = $object['data'];
$i = 0;
// Pour chaque commentaire, on s'arrange pour trouver le nom d'utilisateur
foreach ($object as $post) {
$list = $post['comments']['comment_list'];
foreach ($list as $comment) {

echo '<div class="debug" style="display: none;">';
print_r($comment);
echo '</div>';

$query = 'https://graph.facebook.com/fql?q=select+name+from+user+where+uid=' . $comment['fromid'] . '&access_token=' . $access_token;
$result = file_get_contents($query);
$userObject = json_decode($result, true);
// On remplie notre petit tableau une tranche sur 2 (le reste étant alloué à twitter
if ($i%2 == 0) {
$i++;
}
$network[$i] = array(
'type' => 'facebook',
'id' => $post['post_id'],
'screen_name' => $userObject['data']['name'],
'text' => $comment['text']
);
$i++;
}
}
}

echo '<div class="debug" style="display: none;">';
print_r($network);
echo '</div>';

for ($i=0;$i<=count($network);$i++) {
if (isset($network[$i])) {
if ($network[$i]['type'] == 'facebook') {
echo '<li><img src="template/images/facebook-list.png" alt="facebook" /><a href="#' . $network[$i]['id'] . '">' . $network[$i]['screen_name'] . '</a>' . $network[$i]['text'] . '</li>';
} else {
echo '<li><img src="template/images/twitter-list.png" alt="twitter" /><a href="http://twitter.com/MoMCards/status/' . $network[$i]['id'] . '" target="_blank">@' . $network[$i]['screen_name'] . '</a> ' . $network[$i]['text'] . '</li>';
}
}
}



Partager ce message


Lien à poster
Partager sur d’autres sites

Up



J'ai réussi à contourner le problème en récupérant l'id de chaque commentaire et en cherchant le nom qui correspond au compte.


Ça fonctionne tongue.gif



Par contre, j'ai un autre soucis auquel je n'avais pas pensé plus tôt et que je n'arrive pas à résoudre depuis 2 jours...


Les tokens de facebook ont une durée de vie de seulement 1 heure ^^'



Apparemment il y a un moyen d'en récupérer régulièrement, mais impossible de savoir (et comprendre) comment sad.gif


Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

×