2012-01-12 37 views
7

Cách đáng tin cậy để kiểm tra xem Trang Facebook được xuất bản hoặc chưa được xuất bản bằng API đồ thị là gì? Tôi hiện làm điều này:Facebook API: Xác định xem Trang Facebook được xuất bản/chưa được xuất bản

http://graph.facebook.com/ {} page_id

và kiểm tra xem giá trị trả về là "false". Nếu nó sai, tôi kết luận rằng nó chưa được xuất bản và nếu nó trả về một đối tượng đồ thị, thì kết luận rằng nó được xuất bản. Nhưng bây giờ tôi nhận thấy rằng rất nhiều trang được xuất bản trả lại "sai" từ yêu cầu ở trên.

Dưới đây là một ví dụ:

trang này được công bố: http://www.facebook.com/AjiRestaurant

nhưng những yêu cầu này trả về false: (Id sử dụng trang) http://graph.facebook.com/104433516257517 http://graph.facebook.com/AjiRestaurant (sử dụng username trang)

là gì là tốt nhất cách kiểm tra xem một Trang có được xuất bản không?

+0

Tôi đang xem cài đặt cho các trang của mình và không thể tìm ra cách bạn có thể đặt công khai/riêng tư khác với hộp kiểm trên cùng trên trang có nội dung: "Hiển thị trang [] Không xuất bản trang (chỉ quản trị viên mới có thể xem trang này trang)". Đây có phải là điều bạn muốn truy vấn không? – DMCS

+0

Vâng, đó là một. Tôi muốn phát hiện khi một trang là "chưa được xuất bản". Tôi có thể đã sử dụng các từ sai "riêng tư/công khai" và phải sử dụng "đã xuất bản/chưa được xuất bản". Tôi sẽ cập nhật câu hỏi của tôi ngay bây giờ. –

+0

http://www.facebook.com/AjiRestaurant không hiển thị cho tôi. –

Trả lời

3

punch này ở dưới FQL truy vấn trên http://developers.facebook.com/tools/explorer

SELECT page_id, name, username, is_published 
    FROM page 
    WHERE page_id IN 
     (SELECT page_id FROM page_admin WHERE uid = me()) 
    AND is_published="" 
    ORDER BY fan_count DESC 

Điều đó sẽ chọn tất cả các trang trong tài khoản của bạn và kiểm tra xem họ đã được công bố, trả lại tất cả các trang chưa được công bố trong danh sách.

+0

Rất tuyệt! Bạn đã giải quyết vấn đề này. Dường như 'is_published' hiện cũng có sẵn thông qua biểu đồ API: http://developers.facebook.com/docs/reference/api/page/ –

+0

Kể từ ngày 8 tháng 8 năm 2016, FQL sẽ không còn khả dụng nữa và không thể được truy vấn. –

0

Bạn có thể sử dụng sau, nhưng nó hoạt động khi bạn được phép manage_pages trên trang http://graph.facebook.com/{page_id}/settings

thử mã này với manage_pages phép

FB.api('/me/accounts', function (resp) { 
         //var txtpageid = 
         if (txtpageid != '') { 
          FBactualID = ''; 
          for (var i = 0, l = resp.data.length; i < l; i++) { 
           var page = resp.data[i]; 
           if (page.id == txtpageid) { 
            FBactualID = txtpageid; 
            varFBResponseFlag = true; 
            //alert('inside the page id validation'); 
           } 
          } 
         } 
         getCheckedValue(FBactualID); 

        }); 
+0

Tôi không hoàn toàn theo dõi những gì bạn đang làm. Bạn đang lặp qua tất cả các trang của người dùng và kiểm tra xem ID trang có khớp với ID trang mà tôi đang cố gắng kiểm tra và sau đó lưu trữ nó trong FBactualID hay không. Tại sao bạn cần phải làm điều này? Và sau đó bạn đang gọi getCheckedValue(). Phương pháp đó làm gì? –

0

Fetch trang bằng cách sử dụng API Graph (sử dụng cURL như gọi hệ thống, HTTPClient với Rails hoặc $.getJSON() với jQuery chẳng hạn) với http://graph.facebook.com/PAGE_ID. Các trang chưa được xuất bản sẽ trả về false và các trang đã xuất bản sẽ trả về một mảng thông tin JSON.

Điều này không yêu cầu bất kỳ mã thông báo hoặc quyền truy cập nào.

Sử dụng cURL (dòng lệnh)

$ curl http://graph.facebook.com/UNPUBLISHED_PAGE_ID 
false 
$ curl http://graph.facebook.com/PAGE_ID 
{"id":"1234","name":"Test Page","picture":.... 

Sử dụng HttpClient (với Rails)

HTTPClient.get("http://graph.facebook.com/UNPUBLISHED_PAGE_ID").body 
# false 
HTTPClient.get("http://graph.facebook.com/PAGE_ID").body 
# "{\"id\":\"1234\",\"name\":\"Test Page\",\"picture\".... 

Sử dụng $ .getJSON() (jQuery)

$.getJSON("http://graph.facebook.com/UNPUBLISHED_PAGE_ID", function (data) { 
    console.log(data); // false 
} 
$.getJSON("http://graph.facebook.com/PAGE_ID", function (data) { 
    console.log(data); // JSON Object with page info 
} 
+1

Điều này không đúng. Các trang có hạn chế cũng sẽ trả về false, như trường hợp với các trang quảng bá rượu. Hãy thử http://graph.facebook.com/KeystoneLight và bạn sẽ thấy rằng nó trả về false, mặc dù trang được xuất bản. –

+0

Jeff đúng. Tôi chỉ đến cùng một kết luận và cập nhật câu hỏi ban đầu của tôi với thông tin này. –

+0

Cảm ơn Julio về câu trả lời của bạn. Nó không chính xác 100%, nhưng nó vẫn là một câu trả lời rất thông tin, vì vậy bạn nhận được tiền thưởng. –

0

Bạn sẽ chỉ có thể xem trang nếu bạn sử dụng access_token có thể xem trang trong yêu cầu.

Bạn sẽ luôn thấy chỉ những trang bạn sẽ thấy với người dùng access_token trên facebook.

Sử dụng số điện thoại access_token của riêng tôi trong ví dụ trên, vẫn mang lại hiệu suất false cho AjiRestaurant nhưng tôi sẽ nhận được thông tin cho KeystoneLight khi tài khoản của tôi khớp với các hạn chế.

2

Nó chỉ ra rằng không có cách nào được biết để kiểm tra cụ thể xem một trang được xuất bản/chưa được xuất bản.Đồ thị API http://graph.facebook.com/ {page_id} sẽ trả về false nếu có những điều sau đây là đúng:

  • Trang là chưa được công bố
  • Trang có hạn chế nước
  • Trang có giới hạn tuổi

Nếu và chỉ nếu không có cài đặt nào ở trên áp dụng, thì http://graph.facebook.com/ {page_id} sẽ trả lại biểu đồ đối tượng.

Lưu ý: Tôi giả định rằng mã thông báo truy cập có quyền manage_pages không được sử dụng cho các cuộc gọi API ở trên. Với mã thông báo truy cập thích hợp, https://graph.facebook.com/ {page_id} sẽ trả lại biểu đồ đối tượng, bất kể Trang có hạn chế hay không.

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