2010-11-08 10 views
8

sto chiedendo questa pagina per ottenere gli eventi con la parola chiavericerca eventi di Facebook e impaginazione (grafico API)

"conference":https://graph.facebook.com/search?q=conference&type=event 

Questo funziona bene.

Il problema è l'impaginazione restituita:

"paging": { 
    "previous":"https://graph.facebook.com/search?q=conference&type=event&limit=25&since=2010-12-18T17%3A00%3A00%2B0000", 
    "next":"https://graph.facebook.com/search?q=conference&type=event&limit=25&until=2010-11-04T16%3A29%3A59%2B0000" 
} 

Sembra avere più eventi con "conferenza", ma che richiede questi 2 impaginazione URLS restituisce alcun dato.

È strano perché è lo stesso per ogni parola chiave richiesta e gli URL di impaginazione restituiti dall'API di Facebook sembrano restituire sempre dati vuoti.

Qualcuno sa qual è il problema?

Grazie

risposta

1

credo che questo sia una pratica standard in Facebook Graph API. Penso che se la tua richiesta è risultata in un JSON non vuoto, ti darà sempre il paging successivo, anche se potrebbe essere vuoto.

Non sono sicuro al 100%, perché l'API di Facebook Graph non sembra essere molto ben documentata ... (ad esempio hanno detto che possiamo modificare questa cosa di impaginazione ma non abbiamo spiegato chiaramente come farlo).

6

Ho incontrato confusione simile con una query contro luoghi. L'URL "successivo" si è comportato esattamente come l'hai descritto.

ho potuto interrogare le informazioni sulla posizione utilizzando un URL come questo:

https://graph.facebook.com/search?access_token=INSERT_TOKEN&type=place&center=55.8660,-4.2715&distance=150&limit=10 

E tornato JSON con i primi 10 posti più il seguente frammento che suggerisce l'esistenza di params di paging:

"paging": { 
     "next": "https://graph.facebook.com/search?access_token=INSERT_TOKEN&type=place&center=55.8660\u00252C-4.2715&distance=150&limit=10&offset=10" 

Colpire quell'URL non funziona. Ma ho trovato una combinazione di parametri limite e offset che mi ha dato un paging efficace.

limit=10 & offset not defined => first 10 results 
limit=20 & offset=10 => next 10 results 
limit=30 & offset=20 => next 10 results 
limit=40 & offset=30 => last 8 results (can stop here because less than 10 back) 
limit=50 & offset=40 => confirmation that there are no more results 

mi rendo conto che ho "limite" e "offset" piuttosto che il "limite" e "fino a che" params che si ottiene, ma, si spera si potrebbe applicare la stessa tecnica cioè mantenere l'incremento del limite e inc la data/ora a quella del tuo ultimo risultato?

+1

Sto usando questo metodo con successo nel mio app per pochi mesi. Poi, ad aprile, ho iniziato a ricevere reclami da parte dei clienti sul fatto che l'app non funzionava. Si scopre che non puoi più contare sul numero massimo di risultati che chiedi, anche se potrebbero esserci più risultati del limite. Hai incontrato questo problema? Sto facendo le mie ricerche per posti. – Tenfour04

+0

Non ho fatto nulla con l'API FB per un po 'quindi non sono sicuro, mi dispiace. – stephen

+0

@ TenFour04 La mia risposta è qui per una soluzione su come ottenere il limite massimo per ogni query: http://stackoverflow.com/questions/5023757/how-does-paging-in-facebook-javascript-api-works –

0

Sembra che Facebook lo abbia cambiato di recente. Ecco la correzione:

Per un datetime restituiti nel successivo e precedente, come "2011-01-18T08 \ u00253A42 \ u00253A35 \ u00252B0000", sostituire tutte le occorrenze di "\ u0025" con "%" e dovrebbe funzionare bene.

Se notate formato datetime del facebook, è 2011-01-18T08: 42: 35 + 0000 (data accettata dalla funzione strtotime C)