2012-05-02 42 views
8

Tôi có câu hỏi về cách Facebook giới hạn các cuộc gọi api của bạn.Giới hạn API 5000 bài đăng của Facebook

Hướng tới phía dưới của bài viết này: http://developers.facebook.com/blog/post/478/ facebook nói:

Ngoài các giới hạn được đề cập trong tài liệu hướng dẫn cho từng bảng và các kết nối được liệt kê ở trên, nó là hữu ích để biết rằng số lượng tối đa kết quả chúng tôi sẽ tìm nạp trước khi chạy kiểm tra mức hiển thị là 5.000.

Tôi tự hỏi làm thế nào một trang sẽ thông qua dữ liệu công khai như thế này. Ví dụ, hãy Shakira: cô ấy nhiều, nhiều thích trên mỗi bức ảnh mà cô tải lên, gọi api này:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=0&__after_id=100002349968919

kết thúc lên dừng lại ở 5000 thích.

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=5000&__after_id=100000881924617

Một điểm thú vị là, dữ liệu này là tất cả công chúng, tôi không cần phải đăng nhập vào Facebook để xem nó. Tôi biết có chính sách bảo mật trên cách bạn sử dụng dữ liệu, đó không phải là câu hỏi của tôi. Nếu dữ liệu được công khai, dữ liệu này là gì, tại sao chúng ta không thể có được tất cả, và nếu chúng ta có thể, làm thế nào?

Các câu hỏi chính là:

  1. Bạn có thể nhận được nhiều hơn 5000 kết quả cho một cuộc gọi API cụ thể, như trong một ở trên?

  2. Đây có phải là 5000 lượt thích gần đây nhất không? Vì vậy, nếu bạn bắt đầu thu thập dữ liệu trên bài đăng này ngay lập tức và sau đó quay lại sau mỗi 10 phút để tìm kiếm các lượt thích mới, bạn có thể nhận được tất cả dữ liệu với phương pháp ngăn chặn giới hạn 5000 này không?

  3. Đây có phải là giới hạn cho các cuộc gọi API hay chỉ trên số lượng kết quả họ gửi cho một người dùng hoặc trên số lượng kết quả họ gửi lại cho một bài đăng nhất định, v.v.?

  4. Điều này có áp dụng cho các bài đăng, gắn thẻ và nhận xét cũng như phân trang không?

Tôi biết câu hỏi này là một chút mở kết thúc, nhưng tôi đã xem xét tất cả các nơi cho một câu trả lời và nó không được tài liệu. Bất kỳ sự trợ giúp nào cũng tuyệt vời, và tôi nghĩ rất nhiều người có thể tham khảo thông tin này trong tương lai.

UPDATE:

Khi chạy gọi API này:

https://graph.facebook.com/5027904559_10150854808869560/likes?format=json&limit=1000&offset=4964&__after_id=100000881924617

Bạn nhận lại một kết quả, và do đó đạt giới hạn (cũng ít nhất gần nó). Ai đó đã đề xuất sử dụng FQL và có thể trả lại nhiều hơn. Nhưng tôi đã thử làm điều tương tự trong PHP với FQL và đã trở lại chỉ có 1 hồ sơ.

$select = urlencode("SELECT user_id, object_id, post_id FROM like WHERE post_id='5027904559_10150854808869560' LIMIT 1000 OFFSET 4964"); 
     $fql_query_url = 'https://graph.facebook.com/fql?q=' . $select; 
     $fql_query_result = file_get_contents($fql_query_url); 
     $fql_query_obj = json_decode($fql_query_result, true); 

Vì vậy, cho đến nay, câu trả lời duy nhất là 'không', bạn luôn bị giới hạn ở 5000 kết quả.Và tôi không nghĩ/biết nếu một access_token cụ thể với một số quyền cụ thể sẽ giúp.

Một cập nhật khác, khi tôi truy cập trang của Shakira và nhấp vào 'x số người như thế này' và bắt đầu cuộn xuống qua danh sách, tôi cũng đạt đến giới hạn. Vì vậy, không chỉ Facebook hạn chế API và trả về FQL, chúng còn hạn chế các trang của riêng chúng.

Tôi muốn biết liệu có ai biết tại sao không? Họ chỉ có 5k trong bộ nhớ cache tại một thời điểm, và họ sẽ không thể xử lý quy mô nếu mọi người đã đánh cơ sở dữ liệu với rất nhiều yêu cầu? Chỉ cần đoán thôi.

+0

Tôi ngạc nhiên ngay cả khi dữ liệu có sẵn công khai, thành thật mà nói. Ít nhất tôi mong đợi điều này chỉ có sẵn cho các nhà phát triển ứng dụng đã đăng ký, và thậm chí sau đó chỉ khi tùy chọn quyền riêng tư của người dùng được thiết lập để cho phép nó cho nhà phát triển cụ thể đó. – halfer

+0

Phải, dữ liệu của mọi người không công khai nhưng Trang người hâm mộ có một số dữ liệu công khai. Giống như Shakira. – chantheman

+0

Hi @chantheman, bạn đã giải quyết vấn đề này/tìm một cách khác? –

Trả lời

4

Không có cách nào để có được nhiều hơn 5000 đối tượng cuối cùng, thật đáng buồn.

Trừ khi, như bạn đã nói, bạn đã duy trì nó từ một thời điểm khi có LESS hơn 5000 và lưu trữ chúng. :)

Có thể hoặc không cố ý (có thể họ đang cố gắng để tin tức cũ chết và không dễ dàng tìm thấy), hoặc, nó có thể trùng với số lượng bạn bè bạn được phép trên Facebook, 5000.

+0

Cảm ơn câu trả lời. Chỉ cần làm rõ, khi Shakira có 400.000 lượt thích trên một bức ảnh, tôi chỉ có thể nhận được 5000 mới nhất. Tôi không thể sử dụng bù đắp để đi 5k trở lại bằng cách nào đó (tôi đã cố gắng này và không thể làm cho nó hoạt động)? Điều gì sẽ xảy ra nếu tôi có một số quyền cụ thể từ quản trị viên trang? Tôi có thể nhận được nhiều hơn sau đó? – chantheman

+0

Không. Facebook giống như nhiều trang web, không được xây dựng từ API của chính nó, dẫn đến các vấn đề như thế này. Tuy nhiên, nếu bạn thực sự cần tất cả 400.000 lượt thích, bạn có thể cạo trang. Như tôi đã nói, đây có thể là một hạn chế có chủ ý. – DanRedux

+0

Điều đó thật thú vị. Dường như giới hạn rất nhiều phát triển ứng dụng. Tôi quan tâm để xem liệu có ai đã giải quyết vấn đề này không, nhưng tôi chỉ thấy hai giải pháp: 1. Xây dựng trình thu thập dữ liệu/trình thu thập dữ liệu như bạn đã nói hoặc thu thập dữ liệu tất cả thời gian lưu trữ và lưu trữ dữ liệu cuối cùng được thu thập để bạn có thể bắt đầu ở đó khi bạn thu thập mỗi lần. Tôi muốn xem liệu có ai khác có vấn đề này không. Cảm ơn vì đã cho biết thông tin. – chantheman

Các vấn đề liên quan