Jump to content
Sign in to follow this  
elfaus

Problème API Facebook

Rate this topic

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



Share this post


Link to post
Share on other 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


Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...