好的,通常我对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可能吗?)现在我每隔几个小时手动更改一次这个值很繁琐且不必要的值。
答案 0 :(得分: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 :(得分: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”