9
votes

Comment puis-je commander la liste des amis de la nouvelle API de graphique Facebook?

Vous pouvez obtenir une liste d'amis d'un utilisateur authentifié avec:

https://graph.facebook.com/me/friends

Quelqu'un a-t-il une idée de la commande de la liste par nom d'utilisateur? Parce que cela ne fait pas par défaut. Il n'y a rien dans la documentation.


0 commentaires

9 Réponses :


2
votes

Quel est le problème si vous le faites sur le côté de l'appelant. Cela signifie que, après avoir reçu tous vos amis de cette API graphique, vous pouvez tous les mettre dans une structure de données triée, puis les afficher :)


3 commentaires

Cette solution ne semble pas si mauvaise que j'ai reçu un moins. Si vous ne pouvez pas le faire sur le côté du serveur Facebook à l'aide de graphapi, vous devrez-y en traiter vous-même? droit?


D'accord, j'ai neutralisé le -1. =) Mais je pense que l'API graphique manque ici. Certaines sortes ne peuvent pas être faites par l'appelant. Comme le plus interagi avec des amis d'abord. Ou par nom de famille.


Le problème est que vous ne pouvez pas utiliser les paramètres de limite et de compensation si vous voulez le tri alphabétiquement les deux premiers amis et rien de plus



3
votes

Je pense que toute l'API OpenGraph est toujours dans une étape de transition de FB Connect. Dans tous les cas, je ferais simplement une bonne vieille commande par requête à la FQL, que vous pouvez toujours utiliser. Je ne peux pas imaginer qu'il sera trop difficile de changer une fois que le graphique ouvert de cela est établi.

Ce très bon tutoriel montre comment le faire: p>

http://thinkdiff.net/facebook/php-sdk-graph-api -Base-Facebook-Connect-Didacticiel / P>

$fql    =   "select name, hometown_location, sex, pic_square from user where uid=xxxxxxxxxxxxxxx";
$param  =   array(
        'method'     => 'fql.query',
        'query'      => $fql,
        'callback'   => ''
);
$fqlResult   =   $facebook->api($param);


1 commentaires

Tu as raison. J'ai compris comment faire une requête FQL avec la nouvelle API. poster la réponse maintenant.



5
votes

a compris une solution. Finalement, nous serons probablement en mesure de commander des résultats du graphique. Pour l'instant, je fais juste cela (JavaScript). En supposant que j'ai eu "fb_uid" de ma session PHP: xxx


0 commentaires

12
votes

Nous faisons cela dans plusieurs applications simplement en triant JavaScript. xxx


1 commentaires

Beaucoup de possibilités, mais une idée éventuellement terrible serait de retourner un hasard -1,1,0 dans la fonction de tri ci-dessus :)



1
votes
$friends = $facebook->api('me/friends');
foreach ($friends as $key=>$value) {
    sort($value);
    foreach ($value as $fkey=>$fvalue) {
      echo "<img src='https://graph.facebook.com/".$fvalue[id]."/picture' width='50' height='50' title='".$fvalue[name]."' />";     
    }
}

0 commentaires

1
votes

Pour moi une simple asort ($ amis); a fonctionné bien;)


0 commentaires

0
votes
private function _compareFacebookFriends($a, $b)
{
    return strcasecmp($a['name'], $b['name']);
}

public function sortFacebookFriendsArray(&$array)
{
    usort($array, '_compareFacebookFriends');
}

/* Add here $facebook's initialization. Use Facebook PHP SDK */
$fbFriends = $facebook->api('/me/friends');
sortFacebookFriendsArray($fbFriends);

0 commentaires

0
votes

Construire la réponse de @ Mainsocial, mais trier par dernier nom, au lieu du prénom uniquement:

function sortByName(a, b) {
    var fn = function(x) { return x.name.toLowerCase(); };
    var ln = function(x) { return x.last_name.toLowerCase(); };
    if(ln(a) == ln(b)){
        if(fn(a) == fn(b)) {
            return 0;
        }
        return (fn(a) < fn(b)) ? -1 : 1;
    }
    return (ln(a) < ln(b)) ? -1 : 1;
}

function getFriendsList() {
    FB.api('/me/friends', {fields: 'name,id,last_name'}, function(response) {
        var friends = response.data.sort(sortByName);
        for (i=0; i<friends.length; i++) {
            $('body').append(friends[i].name + ' - ' + friends[i].id + '<br>');
        }
    });
}

getFriendsList()


0 commentaires

2
votes

Utilisation de FQL dans un appel.

SELECT uid, name FROM user WHERE uid IN 
(SELECT uid2 FROM friend WHERE uid1 = me()) 
ORDER BY name ASC


0 commentaires