facebook api: подсчет посетителей для события (проблема с лимитом)

Хорошо, нормально, я отлично разбираюсь в API facebook, но у меня проблема, которая просто заставляет меня задуматься. (Я думаю, что это ошибка (проверьте билет http://bugs.developers.facebook.net/show_bug.cgi?id=13694 ), но я хотел бросить его здесь, если у кого-то есть идея).

Я использую библиотеку PHP facebook для подсчета всех участников для определенного события

$attending = $facebook->api('/'.$fbparams['eventId'].'/attending'); 

это работает без проблем, он правильно возвращает массив со всеми участниками …

теперь проблема:

На этом мероприятии сейчас около 18 000 участников. Вызов api возвращает максимальное количество 992 участников (а не 18000, как должно).

Я пытался

 $attending = $facebook->api('/'.$fbparams['eventId'].'/attending?limit=20000'); 

для тестирования, но ничего не меняет.

Поэтому мой вопрос:

Если я не могу заставить его работать, используя график api, что было бы хорошей альтернативой? (Может быть, анализ HTML-страницы страницы?) Сейчас я меняю значение вручную каждые несколько часов, что является утомительным и ненужным.

На самом деле есть два параметра: limit и offset . Я думаю, вам придется играть с обоими и продолжать звонить, пока не вернется меньше макс. предел.

Что-то вроде этого, но в рекурсивном подходе (я пишу псевдокод):

 offset = 0; maxLimit = 992; totalAttendees = count(result) if (totalAttendees >= maxLimit) { // do your stuff with each attendee offset += totalAttendees; // make a new call with the updated offset // and check again } 

Я много искал, и именно так я исправил его: запрашиваемый URL-адрес должен выглядеть примерно так.

Здесь вы можете проверить это, и вот код, который я использовал:

 function events_get_facebook_data($event_id) { if (!$event_id) { return false; } $token = klicango_friends_facebook_token(); if ($token) { $parameters['access_token'] = $token; $parameters['fields']= 'attending_count,invited_count'; $graph_url = url('https://graph.facebook.com/v2.2/' . $event_id , array('absolute' => TRUE, 'query' => $parameters)); $graph_result = drupal_http_request($graph_url, array(), 'GET'); if(is_object($graph_result) && !empty($graph_result->data)) { $data = json_decode($graph_result->data); $going = $data->attending_count; $invited = $data->invited_count; return array('going' => $going, 'invited' => $invited); } return false; } return false; } 

Пытаться

SELECT eid, attending_count, unsure_count, all_members_count FROM event WHERE eid = "event"