facebook api:计算参与者的活动(限制问题)

时间:2011-03-22 22:08:16

标签: php facebook graph

好的,通常我对facebook API一切都很好,但我遇到了一个问题让我感到疑惑。 (我认为这是一个错误(检查票http://bugs.developers.facebook.net/show_bug.cgi?id=13694)但我想把它扔到这里,如果有人有想法的话。)

我正在使用facebook PHP库来计算特定事件的所有与会者

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

这没有问题,它正确返回一个包含所有与会者的数组......

现在是问题所在:

此活动目前约有18.000名与会者。 api调用返回最多992个与会者(而不是18000)。

我试过

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

进行测试,但不会改变任何内容。

所以我的实际问题是:

如果我不能通过使用图形api让它工作,那么什么是一个好的选择呢? (解析事件页面的html可能吗?)现在我每隔几个小时手动更改一次这个值很繁琐且不必要的值。

3 个答案:

答案 0 :(得分:2)

实际上有两个参数limitoffset。我认为你必须同时使用它们并继续拨打电话,直到一个小于最大值。限制。

这样的东西,但是以递归的方式(我正在编写伪代码):

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 :(得分:1)

我搜索了很多,这是我修复它的方式: 请求的网址应类似于this

Here是您可以测试它的地方,这是我使用的代码:

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

答案 2 :(得分:0)

尝试

SELECT eid,attending_count,unsure_count,all_members_count FROM event WHERE eid =“event”