Estoy tratando de obtener mi nombre de amigo y mis identificadores con Graph API v2.0, pero los datos vuelven vacíos:
{
"data": [
]
}
Cuando estaba usando v1.0, todo estaba bien con la siguiente solicitud:
FBRequest* friendsRequest = [FBRequest requestForMyFriends];
[friendsRequest startWithCompletionHandler: ^(FBRequestConnection *connection,
NSDictionary* result,
NSError *error) {
NSArray* friends = [result objectForKey:@"data"];
NSLog(@"Found: %i friends", friends.count);
for (NSDictionary<FBGraphUser>* friend in friends) {
NSLog(@"I have a friend named %@ with id %@", friend.name, friend.id);
}
}];
¡Pero ahora no puedo conseguir amigos!
Respuestas:
En la versión 2.0 de Graph API, las llamadas
/me/friends
devuelven los amigos de la persona que también usan la aplicación.Además, en v2.0, debe solicitar el
user_friends
permiso de cada usuario.user_friends
ya no se incluye por defecto en cada inicio de sesión. Cada usuario debe otorgar eluser_friends
permiso para aparecer en la respuesta a/me/friends
. Consulte la guía de actualización de Facebook para obtener información más detallada, o revise el resumen a continuación.Si desea acceder a una lista de amigos que no usan aplicaciones, hay dos opciones:
Si desea dejar que su gente etiquete a sus amigos en historias que publican en Facebook usando su aplicación, puede usar la
/me/taggable_friends
API. El uso de este punto final requiere una revisión por parte de Facebook y solo debe usarse para el caso en el que está representando una lista de amigos para permitir que el usuario los etiquete en una publicación.Si su aplicación es un juego y su juego es compatible con Facebook Canvas , puede usar el
/me/invitable_friends
punto final para representar un cuadro de diálogo de invitación personalizado , luego pasar los tokens devueltos por esta API al cuadro de diálogo de solicitudes estándar.En otros casos, las aplicaciones ya no pueden recuperar la lista completa de amigos de un usuario (solo aquellos amigos que han autorizado específicamente su aplicación usando el
user_friends
permiso). Esto ha sido confirmado por Facebook como 'por diseño'.Para las aplicaciones que desean permitir que las personas inviten a amigos a usar una aplicación, aún puede usar el cuadro de diálogo Enviar en la Web o el nuevo cuadro de diálogo de mensajes en iOS y Android .
ACTUALIZACIÓN: Facebook ha publicado un FAQ sobre estos cambios aquí: https://developers.facebook.com/docs/apps/faq que explican todas las opciones disponibles para los desarrolladores para invitar a amigos, etc.
fuente
taggable_friends
en los artículos para el envío de la revisión.taggable_friends
ahora no devuelve nada. Además, se requiere una revisión de inicio de sesión antes de que se le otorgueuser_friends
permiso.Aunque la respuesta de Simon Cross es aceptada y correcta, pensé en reforzarla un poco con un ejemplo (Android) de lo que hay que hacer. Lo mantendré lo más general posible y me centraré solo en la pregunta. Personalmente terminé almacenando cosas en una base de datos para que la carga fuera fluida, pero eso requiere un Adaptador de cursor y un Proveedor de contenido que está un poco fuera de alcance aquí.
Vine aquí yo mismo y luego pensé, ¿y ahora qué?
La cuestión
Al igual que el usuario 3594351 , noté que los datos de amigos estaban en blanco. Descubrí esto usando el FriendPickerFragment. Lo que funcionó hace tres meses, ya no funciona. Incluso los ejemplos de Facebook se rompieron. Entonces mi problema fue '¿Cómo creo FriendPickerFragment a mano?
Lo que no funcionó
La opción # 1 de Simon Cross no fue lo suficientemente fuerte como para invitar a amigos a la aplicación. Simon Cross también recomendó el Diálogo de solicitudes, pero eso solo permitiría cinco solicitudes a la vez. El cuadro de diálogo de solicitudes también mostró los mismos amigos durante cualquier sesión de Facebook iniciada sesión. Inútil.
Lo que funcionó (resumen)
Opción # 2 con algo de trabajo duro. Debes asegurarte de cumplir con las nuevas reglas de Facebook: 1.) Eres un juego 2.) Tienes una aplicación Canvas (Presencia web) 3.) Tu aplicación está registrada en Facebook. Todo se hace en el sitio web para desarrolladores de Facebook en Configuración .
Para emular el selector de amigos a mano dentro de mi aplicación, hice lo siguiente:
Detalles
The AsynchTask
La clase de FacebookFriend que creé
fuente
Facebook ha revisado sus políticas ahora. De todos modos, no puede obtener toda la lista de amigos si su aplicación no tiene una implementación de Canvas y si su aplicación no es un juego. Por supuesto, también hay taggable_friends, pero ese es solo para etiquetar.
Podrá extraer la lista de amigos que solo han autorizado la aplicación.
Las aplicaciones que usan Graph API 1.0 estarán funcionando hasta el 30 de abril de 2015 y después de eso quedarán en desuso.
Consulte lo siguiente para obtener más detalles sobre esto:
Amigos del usuario
Preguntas frecuentes sobre desarrollo de aplicaciones de Facebook
fuente
En Swift 4.2 y Xcode 10.1:
Si desea obtener la lista de amigos de Facebook, debe enviar su aplicación para su revisión en Facebook. Vea algunos de los permisos de inicio de sesión:
Permisos de inicio de sesión
Aquí están los dos pasos:
1) Primero, el estado de su aplicación debe estar en Live
2) Obtenga los permisos requeridos de Facebook.
1) Habilite el estado de nuestra aplicación en vivo:
Vaya a la página de aplicaciones y seleccione su aplicación
https://developers.facebook.com/apps/
Seleccione el estado en la esquina superior derecha en el Tablero .
Enviar URL de política de privacidad
Seleccione categoría
Ahora nuestra aplicación está en estado Live .
Se completa un paso.
2) Envíe nuestra aplicación para su revisión:
Primero envíe las solicitudes requeridas.
Ejemplo: user_friends, user_videos, user_posts, etc.
En segundo lugar, vaya a la página Solicitud actual
Ejemplo: user_events
Enviar todos los detalles
Al igual que este envío para todas las solicitudes (user_friends, user_events, user_videos, user_posts, etc.).
Finalmente envíe su aplicación para su revisión.
Si su opinión es aceptada por parte de Facebook, ahora es elegible para leer contactos, etc.
fuente
user_friends
permiso es muy limitado. De la documentación de Facebook (abril de 2019): [Esto solo] otorga permiso a una aplicación para acceder a una lista de amigos que también usan dicha aplicación. Este permiso está restringido a un conjunto limitado de socios y su uso requiere la aprobación previa de Facebook. Para que una persona aparezca en la lista de amigos de otra persona, ambas deben haber compartido su lista de amigos con la aplicación y no haber deshabilitado este permiso durante el inicio de sesión.Como Simon mencionó, esto no es posible en la nueva API de Facebook. Técnicamente hablando , puede hacerlo a través de la automatización del navegador.
Implementación de muestra usando WatiN :
Prototipo con implementación de este enfoque (usando C # / WatiN) ver https://github.com/svejdo1/ShadowApi . También está permitiendo la actualización dinámica del conector de Facebook que está recuperando una lista de sus contactos.
fuente
Intenta
/me/taggable_friends?limit=5000
usar tu código JavaScriptO
prueba la API Graph :
https://graph.facebook.com/v2.3/user_id_here/taggable_friends?access_token=
fuente
En Facebook SDK Graph API v2.0 o superior, debe solicitar el permiso user_friends a cada usuario en el momento del inicio de sesión en Facebook, ya que user_friends ya no se incluye de forma predeterminada en cada inicio de sesión; Tenemos que agregar eso.
Cada usuario debe otorgar el permiso user_friends para aparecer en la respuesta a / me / friends .
Entonces, en el momento del inicio de sesión en Facebook, aparece una pantalla que contiene todos los permisos:
Si el usuario presiona el botón Continuar , se establecerán los permisos. Cuando acceda a la lista de amigos con Graph API, se enumerarán sus amigos que iniciaron sesión en la aplicación como se indicó anteriormente.
La salida contendrá los usuarios que otorgaron el permiso user_friends en el momento de iniciar sesión en su aplicación a través de Facebook.
fuente