22

Me gustaría hacer algo como facepile usando la API gráfica con las acciones abiertas del gráfico 2: desde un objeto personalizado y un objeto personalizado, dame los amigos (usando mi aplicación de Facebook) que hicieron esta acción en este objeto.Recuperar la lista de amigos que realizaron una acción personalizada en un objeto personalizado en el gráfico abierto 2

El problema es que al usar FQL, no puedo consultar objetos y acciones personalizadas. . El uso de la API gráfica, no puedo encontrar una manera de interceptar la lista de mis amigos con el objeto que estoy interesado

Lo mejor que podía hacer era la siguiente utilizando el modo por lotes de la API gráfica:

batch=[ 
    // First we get the list of friends that are using my facebook application 
    { "method": "GET", "relative_url": "fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+(SELECT+uid1+FROM+friend+WHERE+uid2=me())+AND+is_app_user=1+LIMIT+0,49", "name": "friends"}, 
    // Then query each friend to get the list of objects that went through my namespace:testaction 
    { "method": "GET", "relative_url": "{result=friends:$.data.0.uid}/namespace:testaction" }, 
    { "method": "GET", "relative_url": "{result=friends:$.data.1.uid}/namespace:testaction" }, 
    ... 
    { "method": "GET", "relative_url": "{result=friends:$.data.49.uid}/namespace:testaction" } 
] 

es bastante ineficiente y no resuelve completamente mi problema desde:

  • todavía tengo que filtrar los resultados para obtener sólo el que coincide con el objeto quiero
  • Si hay otros arge número de objetos en el espacio de nombres: testaction, tengo que ir a través de paginación, hacer más consultas (intento minimizar el número de consultas)

¿Ves una mejor manera de hacer esto?

+0

Intente utilizar el plugin de Actividad de Facebook con las acciones de gráfico abierto personalizado como describo [aquí] (http://stackoverflow.com/a/11769117/1342440) –

+0

Ha cambiado la situación o aún tenemos que usar solicitudes por lotes ? – Till

Respuesta

3

Ahora es posible hacer esto con una solicitud de la API gráfica:

GET https://graph.facebook.com/me/friends?limit=50&fields=name,namespace:testaction.limit(100) 

ver field expansion y updates to the graph API.

+0

Apenas unos días para reclamar mi recompensa, lo siento por usted, pero muchas gracias por informarnos. – Till

+0

Solo sirve para mostrar qué tan volátil puede ser la API de FB. Esperemos que esto no sea arrastrado o modificado en el futuro. – derickito

6

Esto probablemente no es exactamente lo que está buscando, pero dado el hecho de que Facebook (AFAIK) no proporciona (y probablemente nunca proporcionará) la capacidad de hacerlo. Creo que simplemente debe almacenar la información usted mismo y luego consultar los datos de su propia base de datos. Sería como lo que está haciendo en su pregunta, pero puede optimizarlo ya que es su base de datos.

Estoy seguro de que ya pensó en esto, pero alguien tuvo que decirlo.

+0

Realmente quiero usar solo Facebook API. Actualmente estoy duplicando datos y quiero migrar a una solución completa de facebook-api. – Scharron

+2

Como dije en mi respuesta "probablemente esto no sea exactamente lo que está buscando", pero si está buscando una solución de API completa, entonces está limitado a lo que Facebook le permitirá hacer. No hay forma de evitar esto, no importa cuánto lo desees. FQL no te permite hacerlo, la API no te permite hacerlo. O te vuelves dependiente de Facebook y haces solo lo que te dejan hacer o duplicas datos y haces lo que quieras. Es así de simple, no hay una solución oculta. De nuevo, probablemente no sea lo que quieres escuchar. – derickito

3

Si la respuesta derickito no es suficiente, debería explorar la posibilidad de obtener su aplicación en la lista blanca de Facebook (también ser socio) para obtener la API gráfica privada donde podría existir esta funcionalidad, pero no está disponible para aplicación "normal" que está bloqueada con la API gráfica pública.

Cuestiones relacionadas