api facebook: подсчитать количество посетителей на мероприятии - PullRequest
3 голосов
/ 23 марта 2011

Ладно, обычно я в порядке с 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-кода страницы события). Сейчас я меняю значение вручную каждые несколько часов, что утомительно и не нужно.

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

На самом деле есть два параметра, 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
}
1 голос
/ 04 ноября 2014

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

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

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;
}
0 голосов
/ 08 мая 2014

Попробуйте

ВЫБРАТЬ eid, centing_count, unsure_count, all_members_count ОТ события WHERE eid = "event"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...