2010-11-08 4 views
8

Я прошу эту страницу, чтобы получить события с ключевым словомПоиск Facebook событий и разбиение на страницы (Graph API)

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

Это прекрасно работает.

Проблема заключается в пагинации вернулась:

"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" 
} 

кажется, больше событий с «конференцией», но прошу эти 2 URLS возвращают нумерации страниц данных нет.

Это странно, потому что это одинаково для любого запрошенного ключевого слова, а URL-адреса страниц, возвращаемые API Facebook, всегда возвращают пустые данные.

Кто-нибудь знает, в чем проблема?

Благодаря

ответ

1

Я думаю, что это стандартная практика в Facebook Graph API. Я думаю, что если ваш запрос привел к непустому JSON, они всегда будут давать вам следующий пейджинг, хотя он может быть пустым.

Я, однако, не уверен на 100%, потому что API-интерфейс Facebook не выглядит очень хорошо документированным ... (например, они сказали, что мы можем изменить эту вещь, но не ясно объяснили, как это сделать).

6

Я столкнулся с подобной путаницей с запросом на места. «Следующий» URL-адрес вел себя так, как вы его описали.

Я мог бы запросить информацию о местоположении, используя URL-адрес, как это:

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

И вернулся JSON с первых 10 мест плюс следующий фрагмент, который указывает на существование пейджинговой Params:

"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" 

Нажатие этого URL-адреса не работает. Но я выяснил комбинацию параметров ограничения и смещения, которые дали мне эффективный пейджинг.

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 

Я понимаю, что у меня есть «предел» и «смещение», а не «предел» и «до» Params, что вы получите, но, надеюсь, вы могли бы применить ту же технику, т.е. держать приращение предела и укажите дату/время на дату вашего последнего результата?

+1

Я использую этот метод успешно в моем приложении для несколько месяцев. Затем, некоторое время в апреле, я начал получать жалобы клиентов о том, что приложение не работает. Оказывается, вы больше не можете полагаться на получение полного лимита количества результатов, о которых вы просите, даже при том, что может быть больше результатов, чем предел. Вы столкнулись с этой проблемой? Я занимаюсь поиском мест. – Tenfour04

+0

Я ничего не делал с FB API, поэтому не уверен, извините. – stephen

+0

@ TenFour04, пожалуйста, ответьте мне, чтобы получить решение о том, как получить полный лимит на каждый запрос: http://stackoverflow.com/questions/5023757/how-does-paging-in-facebook-javascript-api-works –

0

Кажется, что facebook недавно изменил его. Вот исправление:

Для DateTime вернулся в следующий и предыдущий, как «2011-01-18T08 \ u00253A42 \ u00253A35 \ u00252B0000», заменить все вхождения «\ u0025» с «%», и он должен работать хорошо.

Если вы заметили формат DATETIME в facebook, это является 2011-01-18T08: 42: 35 + 0000 (дата принята функцией StrToTime C)

Смежные вопросы