2011-02-02 38 views
43

Tôi đã tích hợp nút "Thích" của Facebook vào nhiều trang trong trang web của tôi. Tôi muốn hiển thị hầu hết các trang "Đã thích" trên trang web của mình trong danh sách, nhưng tôi không thể tìm ra cách lấy dữ liệu đó từ Facebook trong một yêu cầu. Cho đến nay, tôi đã có thể để có được những "Giống như" đếm cho trang cá nhân bằng cách sử dụng truy vấn FQL sau:Nhận số "Like" trên Facebook cho mỗi trang trên tên miền của tôi

SELECT share_count, like_count, comment_count, total_count 
FROM link_stat 
WHERE url="http://www.mysite.com/some-page" 

Tuy nhiên, nhận được số lượng cho mỗi trang trên trang web của tôi cùng một lúc là không thực sự khả thi. Ngoài việc có một số lượng lớn các trang, các trang mới được tạo liên tục (các tiểu sử người dùng mới, blog mới và các bài viết trên blog, v.v.) sẽ làm cho số liệu thống kê hoàn chỉnh cho trang web của tôi trở nên phức tạp và liên quan đến việc gọi API của Facebook hàng ngàn lần .

Có cách nào để tính số lần mỗi trang trên tên miền của tôi đã được "Thích" trong một yêu cầu không? Hay chỉ là 10 trang "Được yêu thích nhất" hay một thứ tương tự?

+1

Chỉ cần một FYI, tôi đã không tìm thấy một giải pháp này. Tôi hiện đang làm việc xung quanh nó bằng cách xử lý các sự kiện khách hàng được API javascript của Facebook kích hoạt để thu thập dữ liệu trong cơ sở dữ liệu của ứng dụng của tôi và truy vấn db cục bộ của tôi khi tôi cần các trang được yêu thích nhất trên trang web của mình. – KOTJMF

+1

Làm thế nào, trong trường hợp đó, bạn sẽ đối phó với người dùng không cho phép các trang của bạn từ bên ngoài (chính tiểu sử fb của họ)? – fiveDust

Trả lời

2

1) tạo ra một người dùng giả mạo trên fb mà sẽ thích chỉ trang từ tên miền của bạn hoặc một số cách khác để tiết kiệm url của bạn vào fb với khả năng để có được chúng bằng cách FQL sau

2) truy vấn:

SELECT share_count, like_count, comment_count, total_count 
    FROM link_stat WHERE url in (SELECT object_id FROM like WHERE user_id="fake_user_id") 

3) don `t quên sụt lần vào ngày 1 mỗi như đếm;), sắp xếp và hiển thị

+0

Vấn đề với điều này là các trang mới liên tục được tạo ra trên trang web bởi người dùng (hồ sơ người dùng mới, blog mới, bài đăng trên blog mới, v.v.). Có một người dùng facebook "thích" tất cả mọi thứ trên trang web là không thực sự khả thi vì không có cách nào để tự động như mọi thứ trên trang web của tôi. Tôi phải viết một bot để thu thập dữ liệu trang web và như mọi thứ theo định kỳ hoặc một cái gì đó. Tôi thực sự đang tìm kiếm một cách để lấy dữ liệu từ một trong các API của facevook mà không phải thực hiện một tấn công việc. – KOTJMF

+2

Bạn có thể tự động đăng liên kết (hoặc ghi chú, v.v.) xem http://developers.facebook.com/docs/reference/rest/links.post sau đó SELECT share_count, like_count, comment_count, total_count FROM link_stat WHERE url in (CHỌN url TỪ liên kết WHERE owner = "fake_user_id") – UIBuilder

22

Thật sự tôi sẽ làm điều đó theo cách này:

$arrayOfPages = array('url1', 'url2', 'url3'); 

$listOfPages = implode(',', $arrayOfPages); 

SELECT share_count, like_count, comment_count, total_count, url 
FROM link_stat 
WHERE url IN ($listOfPages) 

Điều đó sẽ cung cấp cho bạn tất cả dữ liệu có URL là mã định danh duy nhất mà không phải phá vỡ chính sách của Facebook đối với người dùng giả mạo. Bạn có thể tự động tạo biến số $arrayOfPages từ truy vấn trên cơ sở dữ liệu của trang web của mình.

+0

Điều này yêu cầu tạo danh sách trang đầu tiên, mà bạn có thể không còn nữa (ví dụ: trang đã xóa), có cách nào để có được kết quả tương tự mà không tạo danh sách không? –

2

Dường như không có 'LIKE' trong FQL. Đó là gợi ý đầu tiên của tôi ..

Mặc dù bạn có thể sử dụng "IN" nhà điều hành, như vậy:

SELECT share_count, like_count, comment_count, total_count
FROM link_stat
WHERE "http://www.mysite.com/" IN url
ORDER BY like_count
LIMIT 10;

+0

Điều này có vẻ thực sự hứa hẹn nhưng tôi không thể nhận được truy vấn trả lại nhiều kết quả, mặc dù nhiều trang trong tên miền của tôi đã được "Thích". Nó chỉ bao giờ dường như trả về dữ liệu Like cho URL chính xác trong mệnh đề where. – KOTJMF

+0

Có thể cần phải nhìn vào cú pháp FQL sau đó, tôi đã không bao giờ thực hiện nó. Có lẽ bạn cần phải bao gồm một số loại ký tự đại diện. –

+0

Không có ký tự đại diện nào trong Fql :-( –

1

Có lẽ bạn chỉ có thể truy vấn số lượt thích cho mỗi trang mỗi khi trang web là đã xem. Điều này sẽ không chính xác, nhưng hãy nhớ rằng các trang phổ biến nhất sẽ được xem thường xuyên hơn, nó có thể đủ tốt.

Ngoài ra, bạn có thể sử dụng quy trình theo lô để truy vấn số lượt thích của tất cả các trang hoặc ít nhất N số trang được tạo nhiều nhất sau mỗi vài giờ. Hầu hết thời gian bạn sẽ không nhận được kết quả chính xác, nhưng trong hầu hết các trường hợp, người dùng của bạn không cần kết quả chính xác nhưng gần đúng là đủ.

5

Sẽ rất khó để có được FB thích cho tất cả các trang của bạn trong một truy vấn, nhưng bạn có thể nhận được số lượng chia sẻ riêng cho mỗi trang trong trang web của mình. Ngoài số lượng chia sẻ, bạn cũng có thể nhận được số lượng chia nhỏ cho các mạng xã hội riêng lẻ mà trang web của bạn được chia sẻ. Chèn tên miền của bạn tại http://sharedcount.com/?url=http%3A%2F%2Fwww.parasitech.net%2F với các đề xuất thích hợp được cung cấp cho bạn. Bạn có thể lấy số cho Facebook, Twitter, Google+, Diggs, Linkedin, Google Buzz, Delicious và StumbleUpon.

7

Tiếp tục câu trả lời của Salil, dưới đây là một số phần chia sẻ API chính.com đang sử dụng (đầy đủ danh sách ở đây: http://sharedcount.com/documentation.php)

Bạn có thể sử dụng API sharedcount của để có được một bản tóm tắt chung, hoặc viết một cái gì đó cho mình bằng cách sử dụng API:

-1

Sau khi một số nhìn xung quanh, chúng ta có thể được tốt hơn bằng cách sử dụng FQL với graph API:

http://graph.facebook.com/fql?q=select%20comment_count%2C%20share_count%2C%20like_count%20from%20link_stat%20where%20url%20%3D%20%22http%3A%2F%2Fmashable.com%2F2013%2F01%2F30%2Ffacebook-twitter-blackberry-10%2F%22

Kết quả là

{ 
    "data": [ 
     { 
     "comment_count": 3, 
     "share_count": 91, 
     "like_count": 5 
     } 
    ] 
} 
+0

Đây là một truy vấn rất giống với truy vấn trong câu hỏi ban đầu, và giúp chúng ta không gần với mục tiêu cuối cùng của việc nhận được tất cả các "thích" cho mỗi trang trên một trang web. – KOTJMF

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