2011-10-31 4 views
10

Una llamada muy útil en la antigua API REST es Friends.getAppUsers. Esta llamada devuelve todos tus amigos que están usando una aplicación. Lamentablemente, esto no está en la API Open Graph. Hay una buena publicación de Stack Overflow al respecto, Facebook 'Friends.getAppUsers' using Graph API.¿Reemplazo de llamadas anteriores de GetAppUsers para ver a los amigos de un usuario que usan mi aplicación?

Sin embargo, es posible utilizar Graph API para hacer llamadas FQL como se puede ver aquí en el Graph API explorer.

pensé que tal vez podría hacer la siguiente llamada utilizando el SDK de C#:

fb.GetAsync("fql/?q=SELECT uid,username, is_app_user FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1"); 

Sin embargo, este devuelve un error. ¿Hay alguna forma de solucionar la falta de la llamada GetAppUsers con el SDK C# existente?

Respuesta

30

La llamada a la API de reemplazo para users.isAppUser es una simple llamada a /me/?fields=installed Esto también funciona para los amigos de un usuario, por extensión, de modo que es un reemplazo para friends.getAppUsers.

Intenté esto con el token de acceso a la aplicación y un token de acceso de usuario habitual. Realizar una llamada de API para /{user id}/friends?fields=installed - El retorno se ve así:

{ 
    "data": [ 
    { 
     "id": "{FRIEND_UID_1}" 
    }, 
    { 
     "id": "{FRIEND_UID_2}" 
    }, 
    // etc... 
    { 
     "installed": true, 
     "id": "{FRIEND_UID_X}" 
    } 

// SNIP

Usted puede usar la presencia, o la falta therof, del installed:true para determinar cuál de las los amigos del usuario usan tu aplicación.

Si eso no funciona para usted por alguna razón; ¿Ya no tendrá una lista de los usuarios de su aplicación en su propia base de datos? Podrías recuperar la lista completa de amigos del usuario y compararla con tus propios registros de quién está usando tu aplicación.

+0

Como un aparte, la FQL en su pregunta original básicamente se ve bien para mí; ¿Qué error obtuviste? Puede ser posible usar algo muy similar para obtener su respuesta, podría ser solo un problema de formateo o algo – Igy

0

Hay un problema con su ruta.

uid1 = me()) AND is_app_user=1 

= no tiene la URL codificada correctamente. Reemplace = con %3d.

uid1 %3d me()) AND is_app_user%3d1 

Esto podría verse feo. Por lo tanto una mejor manera sería utilizar el método Query/QueryAsync:

fb.QueryAsync("SELECT uid,username, is_app_user FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1"); 

Si está utilizando v5.2.1 o más temprano, Query va a utilizar la API REST legado. Si está utilizando una versión posterior a v5.3.1, utilizará la API Graph para ejecutar la consulta FQL.

Cuestiones relacionadas