Поиск событий 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"
 }

Кажется, что у него больше событий с «конференцией», но запрос этих двух URL-адресов разбивки на страницы не возвращает данных.

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

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

Спасибо


person kire    schedule 08.11.2010    source источник


Ответы (3)


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

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

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

И получил обратно JSON с первыми 10 местами плюс следующий фрагмент, который предполагает наличие параметров подкачки:

"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 и offset, которая дала мне эффективную пейджинговую связь.

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

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

person stephen    schedule 20.01.2011
comment
Я успешно использую этот метод в своем приложении в течение нескольких месяцев. Затем, где-то в апреле, я начал получать жалобы клиентов на то, что приложение не работает. Оказывается, вы больше не можете рассчитывать на получение полного лимита результатов, который вы запрашиваете, даже если результатов может быть больше, чем лимит. Вы столкнулись с этой проблемой? Я занимаюсь поиском мест. - person Tenfour04; 09.05.2011
comment
Я некоторое время ничего не делал с FB API, поэтому не уверен, извините. - person stephen; 09.05.2011
comment
@TenFour04, пожалуйста, мой ответ здесь для решения о том, как получить полный лимит на каждый запрос: stackoverflow.com/questions/5023757/ - person onosendai; 28.04.2012
comment
Гуннар, спасибо за информацию. Я изучаю это снова в рамках подготовки к критическим изменениям от 6 февраля. В моем случае метод пейджинга с/до неприменим, потому что я использую поисковые запросы пейджинга для мест, которые возвращают результаты в порядке близости, а не возраста. И насколько я могу судить, они отключают метод смещения только для потокового поиска. - person Tenfour04; 05.02.2013

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

Однако я не уверен на 100%, потому что Facebook Graph API, похоже, не очень хорошо документирован... (например, они сказали, что мы можем изменить эту разбивку на страницы, но не объяснили четко, как это сделать).

person Enrico Susatyo    schedule 26.11.2010

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

Для даты и времени, возвращенного в следующем и предыдущем как «2011-01-18T08%3A42%3A35%2B0000», замените все вхождения «\ u0025» на «%», и все должно работать нормально.

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

person binit    schedule 24.01.2011