views:

729

answers:

4

You can get a list of friends of an authenticated user with:

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

Anyone have any idea how to order the list by user name? Because it doesn't by default. There's nothing in the documentation.

+1  A: 

What is the problem if you do it on caller side. That means, after you get all friends from that graph API, you can put all of them into a sorted data structure and then display all of them:)

vodkhang
This solution doesn't seem so bad that I received a minus. If you can not do it on facebook server side using GraphAPI, you will have to deal with it yourself? right?
vodkhang
+2  A: 

I think the whole OpenGraph API is still in a bit of a transitional stage from FB Connect. Or at least it seems that way because the documentation seems more oriented to venture capitalists than for programmers. In any case, I would just do a good old order-by query in FQL, which you can still use. I can't imagine it will be too hard to change once the open graph way of doing this gets established.

This very good tutorial shows you how to do it:

http://thinkdiff.net/facebook/php-sdk-graph-api-base-facebook-connect-tutorial/

$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);
FranticPedantic
You're right. I figured out how to do a FQL query with the new API. posting answer now.
Typeoneerror
+1  A: 

Figured out a solution. Eventually, we'll probably be able to order graph results. For now, I'm just doing this (javascript). Assuming that I got "fb_uid" from my PHP session:

var friends = FB.Data.query("SELECT name, uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1={0}) ORDER BY name", parseInt(fb_uid));
friends.wait(function(rows){
    console.log(rows);
});
Typeoneerror
+2  A: 

we do this in several apps just by sorting in javascript.

function sortByName(a, b) {
    var x = a.name.toLowerCase();
    var y = b.name.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

var _friend_data = null
function lazy_load_friend_data(uid) {
  if (_friend_data == null) {    
    FB.api('/me/friends', function(response) {        
        _friend_data = response.data.sort(sortByName);
      }
    )
  }
}
mainsocial

related questions