Facebook ‘Friends.getAppUsers’ usando Graph API

Tengo una aplicación que usa la antigua API REST llamada Friends.getAppUsers para obtener la lista de amigos para el usuario actual que ha autorizado mi aplicación.

He leído la documentación, ¿cómo hago esto con Graph API? ¿Qué sería un ejemplo de esto?

Busqué por un tiempo, y yo también pensé que esto no era posible usando Graph API.

Sin embargo, publiqué una pregunta similar, Reemplazo de llamadas anteriores de GetAppUsers para ver a los amigos de un usuario que usan mi aplicación. , para la API específica que estaba usando y me dieron una gran respuesta general.

 https://graph.facebook.com/me/friends?fields=installed 

o más en general

 https://graph.facebook.com/{user id}/friends?fields=installed 

Esto devuelve todos los amigos, con el campo adicional “installed = true” para los amigos que usan la aplicación.

Aquí está trabajando en Graph API Explorer :

Esto se puede hacer con FQL.

 SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?) AND is_app_user = 1 

QED!

Sí, Graph API está horriblemente documentada. No veo ninguna documentación para un tipo de “aplicación”, pero hacen referencia a la información de una aplicación en los documentos:

https://graph.facebook.com/2439131959

Entonces, ¿quizás puede obtener los miembros de la aplicación usando la syntax de Grupo?

https://graph.facebook.com/2439131959/members

Necesitarás una sesión autenticada para probarlo. De lo contrario, parece que Facebook nos está presionando para usar FQL para enviar consultas directamente:

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

Puede ejecutar consultas FQL obteniendo https://api.facebook.com/method/fql.query?query=QUERY . Puede especificar un formato de respuesta como XML o JSON con el parámetro de consulta de formato.

Entonces puede pasar una consulta FQL para obtener información sobre su aplicación.

Antigua API REST:

 $facebook->api_client->friends_getAppUsers(); 

Nueva API de gráficos:

 $facebook->api(array('method' => 'friends.getAppUsers')); 

He hecho muchas investigaciones sobre este tema. Por lo que puedo decir, no hay forma de hacer Friends.getAppUsers usando Graph API. Los últimos SDK provistos por Facebook usan la antigua REST API para hacer amigos usando la aplicación.

Usando restFB , hice lo siguiente (gracias Igy / Alex por la guía). Tenga en cuenta que Facebook devuelve una matriz de ID de amigos con “installed” = true si el usuario está instalado (como se puede ver aquí ).

Primero amplíe la clase User, agregando un campo installed :

 import com.restfb.Facebook; import com.restfb.types.User; public class InstalledUser extends User { @Facebook private boolean installed; public InstalledUser() { } public boolean getInsatlled() { return installed; } } 

Luego, usando DefaultFacebookClient:

 FacebookClient facebook = new DefaultFacebookClient(pFacebookAccessToken); Connection installedFacebookUsers = facebook.fetchConnection("/" + pFacebookId + "/friends", InstalledUser.class, Parameter.with("fields", "installed")); for (List friends : installedFacebookUsers) { for (InstalledUser friend : friends) { if (friend.getInsatlled()) { // Add friend.getId() to a list of ID, or whatever } } } 

La solución es hacer el filtrado usted mismo. Presumiblemente, tiene todos los usuarios de los usuarios que se han registrado para su aplicación sentados en su propia base de datos. Primero, obtenga todos los fluidos de los usuarios de los usuarios y seleccione los usuarios de su base de datos que tengan los mismos.

El nuevo progtwig API Graph de Facebook parece muy mal ejecutado y no muy bien pensado. Parece que se apresuraron a publicarlo para Facebook f8 antes de que estuviera maduro, y faltaba mucha funcionalidad que estaba disponible antes.

Todavía puede llamar a la antigua API REST en la nueva API Graph. Eso es perfectamente válido.

Una forma alternativa es usar FQL para obtener los amigos del usuario de la aplicación.

No estoy seguro de si hay una manera de hacer esto usando Graph API.