Поэтому я работал с этим скриптом, чтобы перебирать события с данной страницы. Вдруг я нахожу, что он больше не работает 🙁
У меня такое чувство, что это может быть ошибка, потому что, если вы выбираете любую страницу, просматривайте события с помощью access_token, вы не сможете получить какие-либо данные для «следующего» разбитого на страницы URL. например, попробуйте https://graph.facebook.com/evenightclub/events в apigee.com
Есть идеи?
($ fid – это идентификатор объекта страницы)
try { $facebook = new Facebook(array( 'appId' => '<removed>', 'secret' => '<removed>', )); $access_token = $facebook->getAccessToken(); $events_data = array(); $offset = 0; $limit = 5000; $params = array('access_token' => $access_token); //fetch events from Facebook API $data = $facebook->api("$fid/events/?limit=$limit&offset=$offset", $params); $events_data = array_merge($events_data, $data["data"]); //loop through pages to return all results while(in_array("paging", $data) && array_key_exists("next", $data["paging"])) { $offset += $limit; $data = $facebook->api("$fid/events/?limit=$limit&offset=$offset", $params); $events_data = array_merge($events_data, $data["data"]); }}
Ваш код работает для меня, единственное, что я сделал, это убедиться, что count ($ data ["data"])> 0 перед слиянием с существующей информацией. Так выглядит:
//loop through pages to return all results while(in_array("paging", $data) && array_key_exists("next", $data["paging"])) { $offset += $limit; $data = $facebook->api("$fid/events/?limit=$limit&offset=$offset", $params); // make sure we do not merge with an empty array if (count($data["data"]) > 0){ $events_data = array_merge($events_data, $data["data"]); } else { // if the data entry is empty, we have reached the end, exit the while loop break; } }}