2011-10-12 4 views
13

Uso la API gráfica para obtener los comentarios de la imagen, pero primero quiero ordenar los resultados creando tiempo y luego volver a los datos más recientes. Similar a la instrucción sql 'order by create_time desc', no sé si tiene dicho parámetro.facebook graph api comment list ordena, como 'orderby = desc'?

Actualmente se utiliza para compensar y limitar el acceso a los datos más recientes, sino también conocer el número total de comentarios,

pagesize = 25; 
offset = comments.count - pagesize; 
limit = 25; 

url = "https://graph.facebook.com/" + object_id + "/ comments? access_token =" + access_token + "& limit =" + limit + "& offset =" + limit;

página siguiente:

offset -= 25 

pero comments.ount de numérica a veces no es exacta

y el resultado de la URL de solicitud para volver a veces no coinciden con

Si tiene una muy buena solución

O I us ed el camino equivocado (parámetro 'límite' y 'offset') !!!


Gracias por su respuesta.

"API de gráficos" la existencia de la memoria caché?

puedo enviar un mensaje y 46 comments.requests url, configurar los parámetros:

compensar

= 0 & límite = 1

Luego se debe volver a la última observación (más reciente), la retorno real a la mitad de un comentario, y lo probé un par de veces, establezca el límite y la compensación . De acuerdo con los resultados devueltos, el de en medio es la última comentario

Si fijo el valor límite es superior al límite 'comment.count', los datos devueltos de todo, el sitio web oficial y facebook consistente

Porque la razón de caché?

Gracias de nuevo ~

+0

¿por qué no utiliza FQL? parece ser más flexible en este caso. –

+0

fql ~ ** SELECCIONAR object_id, text, time FROM comment DONDE object_id = 'object_id' ordenar por tiempo desc ** De hecho, es muy flexible, pero "graph api" ¿no es así? Solo puedo usarlo ~. 'fql' es una "API api"? Si eso fuera demasiado agradable ~! – mast

+0

graph API no tiene WHERE y ORDER BY por lo que en su caso FQL parece más flexible. FQL es una característica del gráfico ya que realiza consultas en objetos y conexiones de gráficos. –

Respuesta

3

Graph API devuelve los últimos objetos primero.

Facebook proporciona 2 palabras clave para filtrar los datos obtenidos.

  1. Límite: número "límite" Las devoluciones de los últimos registros
  2. Offset: "límite" número de devolución de los registros de la posición de desplazamiento

Así que para recuperar más reciente "x" comentarios sobre un objeto

https://graph.facebook.com/[OBJECTID]?limit=[X] & offset = 0

Para recuperar los comentarios siguientes "X" (página sabia)

https://graph.facebook.com/[OBJECTID]?limit=[X] & offset = [X * pageno]

Espero que la respuesta sea lo suficientemente clara para usted.

+0

gracias por su respuesta. "Graphics API" la existencia de ** Cache **? – mast

+1

¿Sigue siendo así? * offset = 0 * parece referirse al comentario más antiguo, mientras * offset = 1 ... n * devuelve comentarios posteriores para mí. – dbau

+0

Ver mi respuesta actualizada. Facebook GRAPH API recupera los últimos registros primero de manera predeterminada y el mismo es el caso con el sitio web normal de Facebook. Así que el cero compensado recupera el número más reciente de registros "LIMIT" –

5

@dbau - Aún es mejor usar FQL. En mi experiencia, a menos que haga una llamada muy simple, tiene muy poco control sobre lo que obtiene a través de una llamada Graph API.

¿Por qué no quieres usar FQL? FQL es un punto final de Graph API. Todavía hay algunos datos que solo pueden devolverse a través de FQL.

Esto le dará el resultado que está buscando. La consulta necesita ser URL codificada. Lo dejé en texto plano para mayor claridad.

https://graph.facebook.com/fql?access_token=[TOKEN]&q= 
    SELECT id, fromid, text, time, likes, user_likes FROM comment 
     WHERE object_id = [OBJECT_ID] ORDER BY time DESC LIMIT 0,[N] 

es posible que usted no recibe comentarios [N] volvieron cada vez, ya que Facebook filtra los artículos que no son visibles para el propietario access_token después se ejecuta la consulta. Puede subir el LIMITE y filtrar cualquier exceso de resultados devuelto o si está utilizando un usuario access_token, puede agregar AND can_like = TRUE a la cláusula WHERE para asegurarse de que, si existen, se devuelven [N] publicaciones visibles para el usuario actual.

Cuestiones relacionadas