facebook api:统计活动参加者人数(限制问题)

问题描述 投票:0回答:3

好吧,通常我对 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?)现在我每隔几个小时手动更改该值,这是乏味且不必要的。

php facebook facebook-graph-api
3个回答
2
投票

实际上有两个参数,

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
投票

我搜索了很多,这就是我修复它的方法: 请求的 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
投票

尝试

从活动中选择 eid 、 attend_count、unsure_count、all_members_count WHERE eid ="event"

© www.soinside.com 2019 - 2024. All rights reserved.