2011-10-12 9 views
13

Tôi sử dụng biểu đồ api để nhận các nhận xét của hình ảnh, nhưng trước tiên tôi muốn sắp xếp kết quả bằng cách tạo thời gian và sau đó quay lại dữ liệu mới nhất. Tương tự như câu lệnh sql 'order by create_time desc', tôi không biết nếu có tham số như vậy.biểu đồ facebook danh sách nhận xét api sắp xếp, như 'orderby = desc'?

Hiện nay sử dụng để bù đắp và giới hạn truy cập vào các dữ liệu mới nhất, nhưng cũng biết tổng số ý kiến,

pagesize = 25; 
offset = comments.count - pagesize; 
limit = 25; 

url = "https://graph.facebook.com/" + object_id + "/ comments? access_token =" + access_token + "& giới hạn =" + giới hạn + "& offset =" + giới hạn;

trang tiếp theo:

offset -= 25 

nhưng comments.ount của số đôi khi không chính xác

và kết quả của URL yêu cầu quay trở lại đôi khi không phù hợp

Có giải pháp tốt hay không

Hoặc tôi, chúng tôi đã sửa sai (tham số ‘giới hạn’ và ‘bù trừ’) !!!


Cảm ơn câu trả lời của bạn.

"API đồ họa" sự tồn tại của bộ nhớ cache?

tôi gửi một tin nhắn và 46 comments.requests url, thiết lập các thông số:

offset = 0 & hạn = 1

Sau đó, nó sẽ trở lại bình luận cuối cùng (mới nhất một), các thực tế quay trở lại giữa một bình luận, và tôi đã thử nghiệm một vài lần, đặt bù đắp và giới hạn . Theo các kết quả trả, một trong những trung là bình luận mới nhất

Nếu tôi đặt các giá trị giới hạn lớn hơn 'comment.count', dữ liệu trả về là tất cả, trang web chính thức và facebook phù hợp

Vì lý do bộ nhớ cache?

Cảm ơn bạn lần nữa ~

+0

tại sao bạn không sử dụng FQL? có vẻ linh hoạt hơn trong trường hợp này. –

+0

fql ~ ** SELECT object_id, văn bản, thời gian TỪ bình luận WHERE object_id = 'object_id' theo thời gian desc ** Thật vậy rất linh hoạt, nhưng "đồ thị api" phải không? Tôi chỉ có thể sử dụng nó ~. 'fql' là một "đồ thị api"? Nếu điều đó quá đẹp ~! – mast

+0

API đồ thị không có WHERE và ORDER BY như vậy trong trường hợp FQL của bạn có vẻ linh hoạt hơn. FQL là một tính năng của đồ thị vì nó thực hiện các truy vấn trên các đối tượng đồ thị và các kết nối. –

Trả lời

3

API đồ thị trả về các đối tượng mới nhất trước tiên.

Facebook cung cấp 2 từ khóa để lọc dữ liệu được tìm nạp.

  1. Giới hạn: Returns "giới hạn" số lượng hồ sơ mới nhất
  2. Offset: Returns "giới hạn" số lượng hồ sơ từ vị trí bù đắp

Vì vậy, để lấy mới nhất "x" nội dung đăng tải cho một đối tượng

https://graph.facebook.com/[OBJECTID]?limit=[X] & offset = 0

Để lấy tiếp theo "X" ý kiến ​​(trang khôn ngoan)

https://graph.facebook.com/[OBJECTID]?limit=[X] & bù đắp = [X * pageNo]

Hy vọng câu trả lời đủ rõ ràng cho bạn.

+0

cảm ơn bạn đã trả lời. "Đồ họa API" sự tồn tại của ** Cache **? – mast

+1

Đây có phải là trường hợp không? * offset = 0 * dường như tham khảo bình luận cũ nhất trong khi * offset = 1 ... n * trả về các bình luận sau cho tôi! – dbau

+0

Xem câu trả lời cập nhật của tôi. Facebook GRAPH API truy xuất các bản ghi mới nhất đầu tiên theo mặc định và tương tự là trường hợp với trang web Facebook bình thường. Vì vậy, bù đắp không lấy số lượng "LIMIT" mới nhất mới nhất của hồ sơ –

5

@dbau - Bạn vẫn còn sử dụng FQL tốt hơn. Theo kinh nghiệm của tôi, trừ khi bạn đang thực hiện một cuộc gọi rất đơn giản, bạn có rất ít quyền kiểm soát những gì bạn nhận được thông qua một cuộc gọi API Graph.

Tại sao bạn không muốn sử dụng FQL? FQL là điểm cuối của API đồ thị. Vẫn còn một số dữ liệu chỉ có thể được trả về thông qua FQL.

Điều này sẽ giúp bạn đạt được kết quả mong muốn. Truy vấn cần phải được mã hóa URL. Tôi để nó trong văn bản thuần tuý để rõ ràng.

https://graph.facebook.com/fql?access_token=[TOKEN]&q= 
    SELECT id, fromid, text, time, likes, user_likes FROM comment 
     WHERE object_id = [OBJECT_ID] ORDER BY time DESC LIMIT 0,[N] 

Bạn có thể tìm thấy bạn không nhận được ý kiến ​​[N] trở mỗi lần, vì Facebook lọc ra các mục mà không nhìn thấy được bằng access_token chủ sau truy vấn được chạy. Bạn có thể tăng LIMIT và lọc ra bất kỳ kết quả dư thừa nào được trả lại hoặc nếu bạn đang sử dụng người dùng access_token, bạn có thể thêm AND can_like = TRUE vào mệnh đề WHERE để đảm bảo rằng, nếu chúng tồn tại, [N] bài đăng hiển thị cho người dùng hiện tại được trả lại.