Vì vậy, tôi đã làm việc với tập lệnh này để lặp qua các sự kiện từ một trang nhất định. Đột nhiên tôi thấy nó không hoạt động nữa: (Vòng lặp API đồ thị Facebook qua phân trang
Tôi có cảm giác đó có thể là một lỗi, vì nếu bạn chọn bất kỳ trang nào, xem sự kiện với access_token, bạn sẽ không thể lấy lại dữ liệu cho "tiếp theo "URL paginated. ví dụ như thử https://graph.facebook.com/evenightclub/events trong apigee.com
Bất kỳ ý tưởng?
($ fid là đối tượng trang id)
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"]);
}}
Heh, tôi vừa tìm kiếm vấn đề tương tự này. Vượt qua điều này và nghĩ "wow, đây là chính xác những gì tôi đang sau". Cuộn lên một chút và nhìn vào OP, "hmm, tôi nghĩ rằng tôi đã nhìn thấy mã này trước khi", nhìn vào tên người dùng, "huh". Câu trả lời của bạn hoạt động hoàn hảo bằng cách này, xin lỗi vì không đánh dấu nó một năm trước :) –
bạn không phải đặt bù đắp như thế này: $ offset + = count ($ data ["data"]), trong trường hợp số lượng các mặt hàng thực tế được trả lại nhỏ hơn giới hạn $? trong trường hợp này, tôi không nghĩ FB trả lại 5.000 món hàng cho mỗi cuộc gọi. – rbp