2010-05-19 23 views

Respuesta

5

encontrado una solución. Eventualmente, es probable que podamos ordenar resultados de gráficos. Por ahora, solo estoy haciendo esto (javascript). Suponiendo que llegué "fb_uid" de mi sesión de PHP:

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); 
}); 
+1

FQL ya no funciona. – funkybro

2

¿Cuál es el problema si lo haces por el lado de la persona que llama? Eso significa que, después de obtener todos los amigos de esa API gráfica, puede ponerlos todos en una estructura de datos ordenados y luego mostrarlos a todos :)

+0

Esta solución no parece tan mala que haya recibido un signo menos. Si no puede hacerlo en el lado del servidor de Facebook usando GraphAPI, ¿tendrá que lidiar con esto usted mismo? ¿derecho? – vodkhang

+0

De acuerdo, neutralicé el -1. =) Pero creo que aquí falta la Graph API. La persona que llama no puede hacer algunos tipos. Como la mayoría, primero interactuó con amigos. O por apellido – PEZ

+0

el problema es que no puede usar los parámetros de límite y desplazamiento si quiere los primeros dos amigos ordenados alfabéticamente y nada más –

3

Creo que toda la API OpenGraph todavía está en transición. etapa de FB Connect. En cualquier caso, solo haría una buena orden de búsqueda en FQL, que aún puede usar. No me puedo imaginar que será muy difícil cambiar una vez que se establezca la forma de hacerlo.

Este muy buen tutorial se muestra cómo hacerlo:

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); 
+0

Tiene razón. Descubrí cómo hacer una consulta FQL con la nueva API. publicar respuesta ahora – typeoneerror

12

hacemos esto en varias aplicaciones con sólo la clasificación en 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); 
     } 
    ) 
    } 
} 
+0

¿cómo ordenarías aleatoriamente? ¡Gracias! –

+0

muchas posibilidades, pero una idea posiblemente terrible sería devolver un aleatorio -1,1,0 en la función de ordenación anterior :) – mainsocial

1
$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]."' />";  
    } 
} 
+1

Esto funcionó para mí. – Jeroen

+0

buscando ordenar lista de amigos con facebook php sdk gracias – beautifulday

1

para mí un simple asort (amigos $); funcionó bien;)

0
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

edificio fuera de @ MainSocial de respuesta, pero la clasificación por último a continuación, nombre de pila, en lugar de nombre de pila:

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() 
2

Usando FQL en una llamada.

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