elfaus Posté 14 Décembre 2012 Posté 14 Décembre 2012 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>'; } } }
Solution elfaus Posté 16 Décembre 2012 Auteur Solution Posté 16 Décembre 2012 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 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant