2011-01-20 14 views
7

Qualcuno sa perché non importa quanti commenti abbia un determinato oggetto di aggiornamento dello stato del grafico, esso limiterà i commenti a 25? Ho la sensazione che restituisca solo un 'esempio' dei commenti effettivi sull'oggetto. Come posso forzarlo a ottenerli tutti senza usare le API FQL?Gli oggetti di stato grafico Connetti Facebook hanno i commenti chiusi a 25

+0

non occupa il mio a 4 affatto. Qual è la tua query FQL? – ilteris

+0

scusa amico, ho modificato leggermente la domanda sotto di te –

risposta

1

Questo è solo il modo in cui le opere Graph API. Dai un'occhiata ai documenti API. Ne prendi 25 alla volta e devi passarci sopra. È possibile utilizzare il timestamp (created_time) dell'ultimo commento nel batch come parametro nella successiva chiamata all'API Graph oppure è possibile utilizzare il parametro offset. Questo è quello che ho fatto. Mi sono imbattuto in alcuni avvilimento utilizzando created_time. Questo è un esempio della mia app di test C#. Ignora i riferimenti all'oggetto PostComment che è solo una struttura dati che ho creato per contenere i dati che sto prelevando. La magia (e il processo sto riferimento) è nei parametri vengono passati alla chiamata API grafico:

parameters.Add("offset", numPostComments); 
parameters.Add("limit", 25); 

Sono abbastanza certo è possibile impostare il "limite" per niente 25 o al di sotto.

do 
{ 
    foreach (var comment in comments.data) 
     { 
      numPostComments++; 
      PostComment pc = new PostComment(); 
      pc.Post_ID = p.Id; 
      pc.Facebook_ID = comment.id; 
      pc.From = comment.from.name; 
      if (comment.likes != null) 
       pc.Likes = (int)comment.likes; 
      pc.CommentDate = DateTime.Parse(comment.created_time); 
      pc.CommentText = comment.message; 
      p.Comments.Add(pc); 
     } 
     // Create new Parameters object for call to API 
     Dictionary<string, object> parameters = new Dictionary<string, object>(); 
     parameters.Add("offset", numPostComments); 
     parameters.Add("limit", 25); 

     // Call the API to get the next block of 25 
     comments = client.Get(string.Format("{0}/comments", p.Facebook_ID), parameters); 
} while (comments.data.Count > 0); 
1
+0

Passerà alla pagina successiva degli aggiornamenti di stato o alla pagina successiva dei commenti su un singolo aggiornamento di stato? Se è il più tardi, non funzionerà perché sto recuperando più di 100 aggiornamenti di stato in un colpo ... e chiamare individualmente per più commenti su ognuno sarebbe estremamente lento. –

+0

Ciao domanda Mike, e mi dispiace dire che non lo so, il modo migliore sarebbe provarlo e controllare cosa fa – Yogesh