2011-04-11 15 views
8

Soy bastante nuevo en las API de Facebook. Quiero obtener una lista de mis amigos que también han instalado mi aplicación. (La idea es que puedes comenzar un juego con ellos).Lista de usuarios de aplicaciones de Facebook

Esto da una lista de mis amigos:

FB.api('/me/friends', ... 

Esto da a mi información de la aplicación:

FB.api('/myappid', ... 

Lo que yo quiero es "mis amigos que también tienen esta aplicación instalada"

Pensé que podría ser esto:

FB.api('/myappid/accounts', ... 

Esperaba que al menos me diera mis Desarrolladores, Administradores o Probadores, pero no tuve tanta suerte. http://developers.facebook.com/docs/test_users/ http://developers.facebook.com/docs/ApplicationSecurity/

Mi sensación es tal vez tengo que usar FQL a construst una consulta que dice algo así como

(psuedocode) 
SELECT 
FROM my_friends 
WHERE uid IN (
    SELECT uid 
    FROM app_users 
    WHERE appid = myappid 
) 

Cualquier consejo sería muy apreciada.

Nota, he visto este post: FaceBook app: retrieve list of ids of my application's users

estoy manteniendo una lista local de los ID de usuario de Facebook que pertenecen a mi sitio, y estoy realmente capaces de lograr mi objetivo de realizar el siguiente, pero Estoy seguro de que debe haber una mejor manera:

$facebookFriendIds = array(); 
$friends = $this->facebook->api('/me/friends'); 
foreach ($friends['data'] as $friend) { 
    $facebookFriendIds[] = $friend['id']; 
} 

$this->friends = Doctrine_Core::getTable('User')->createQuery() 
    ->whereIn('fb_user_id', $facebookFriendIds) 
    ->execute(); 

Respuesta

9

Esto se creo la consulta FQL

$facebook->api(array('method' => 'fql.query', 'query' => "SELECT uid FROM user WHERE is_app_user = '1' AND uid IN (SELECT uid2 FROM friend WHERE uid1 = '" . $user_id . "');"));

(utilizo las API de Java y JS lo que la sintaxis puede no ser exactamente correcto)

La documentación para las consultas de los usuarios y amigo está aquí:

http://developers.facebook.com/docs/reference/fql/user/

http://developers.facebook.com/docs/reference/fql/friend/

1

utilizar esta consulta en JS

function getAppFriends() 
{ 

    var fql = "SELECT uid, name, pic_square, is_app_user 
       FROM user 
       WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 
       OR uid IN(SELECT uid1 FROM friend WHERE uid2=me()) 
       ORDER BY name"; 

    var query = FB.Data.query(fql); 

    query.wait(function(responseFromFb){ 

     if(responseFromFb!=null){ 

      // Read the responseFromFb and check for 
      // is_app_user = true and list them out the way 
      // you want to. 

     } 

    });// anonymus function closes here 
} //function ends here 
+0

¿Qué desea más legible que esto? ;) –

+0

nada :-) ... – kleopatra

Cuestiones relacionadas