Aller au contenu

Problème API Facebook


elfaus
Aller à la solution Solutionné par elfaus,

Sujets conseillés

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>';
}
}
}



Lien vers le commentaire
Partager sur d’autres sites

  • Solution

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


Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...