2012-01-12 13 views
7

ग्राफ एपीआई का उपयोग करके फेसबुक पेज प्रकाशित या अप्रकाशित है या नहीं, यह देखने का एक विश्वसनीय तरीका क्या है? मैं वर्तमान में ऐसा करते हैं:फेसबुक एपीआई: निर्धारित करें कि फेसबुक पेज प्रकाशित/अप्रकाशित

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

और अगर वापसी मान "गलत" है की जाँच करें। यदि यह गलत है, तो मैंने निष्कर्ष निकाला है कि यह अप्रकाशित है और यदि यह ग्राफ ऑब्जेक्ट देता है, तो निष्कर्ष निकालें कि यह प्रकाशित है। लेकिन अब मैं देख रहा हूं कि बहुत से प्रकाशित पृष्ठ उपरोक्त अनुरोध से "झूठी" लौटते हैं।

यह पेज प्रकाशित किया जाता है:

यहाँ एक उदाहरण है http://www.facebook.com/AjiRestaurant

लेकिन इन अनुरोधों अवास्तविक लौटाते: http://graph.facebook.com/104433516257517 (पेज का उपयोग कर आईडी) http://graph.facebook.com/AjiRestaurant (पेज उपयोगकर्ता नाम का उपयोग)

क्या सबसे अच्छा है यह जांचने का तरीका है कि कोई पृष्ठ प्रकाशित है या नहीं?

+0

मैं अपने पृष्ठों के लिए सेटिंग्स देख रहा हूं और यह नहीं समझ सकता कि आप पेज पर शीर्ष चेक बॉक्स के अलावा सार्वजनिक/निजी कैसे सेट कर सकते हैं: "पृष्ठ दृश्यता [] पृष्ठ अप्रकाशित करें (केवल व्यवस्थापक ही इसे देख सकते हैं पृष्ठ)"। क्या आप यही पूछना चाहते हैं? – DMCS

+0

हाँ, वह वही है। मैं यह जानना चाहता हूं कि कोई पृष्ठ "अप्रकाशित" है। मैंने शायद गलत शब्द "निजी/सार्वजनिक" का उपयोग किया था, और "प्रकाशित/अप्रकाशित" का उपयोग करना चाहिए था। मैं अब अपना प्रश्न अपडेट करूंगा। –

+0

http://www.facebook.com/AjiRestaurant मेरे लिए दिखाई नहीं देता है। –

उत्तर

3

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 

पर में पंच इस FQL क्वेरी के तहत है कि आपके खाते के सभी पृष्ठों का चयन करें और देखें कि क्या उन्होंने प्रकाशित कर रहे हैं, एक सूची में सभी अप्रकाशित पृष्ठों लौटने।

+0

अच्छा! आपने इसे हल किया ऐसा लगता है कि 'is_published' अब ग्राफ एपीआई के माध्यम से भी उपलब्ध है: http://developers.facebook.com/docs/reference/api/page/ –

+0

8 अगस्त, 2016 तक, एफक्यूएल अब उपलब्ध नहीं होगा और नहीं हो सकता पूछे। –

0

आप निम्न का उपयोग कर सकते हैं, लेकिन यह काम करता है आप manage_pages पेज http://graph.facebook.com/{page_id}/settings

पास इसकी अनुमति जब manage_pages अनुमति

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

मैं जो भी कर रहा हूं उसका पालन नहीं करता हूं। आप सभी उपयोगकर्ता के पेजों के माध्यम से पुन: प्रयास कर रहे हैं और यह जांच कर रहे हैं कि पृष्ठ आईडी उस पृष्ठ आईडी से मेल खाती है जिसे मैं जांचने की कोशिश कर रहा हूं और फिर इसे FBactualID में संग्रहीत कर रहा हूं। आपको ऐसा करने की आवश्यकता क्यों होगी? और फिर आप getCheckedValue() को कॉल कर रहे हैं। वह विधि क्या करती है? –

0

के साथ इस कोड की कोशिश (के रूप में cURL का उपयोग कर ग्राफ़ एपीआई का उपयोग कर पेज लायें एक सिस्टम कॉल, HTTPClient रेल के साथ, या $.getJSON() jQuery के साथ, उदाहरण के लिए) http://graph.facebook.com/PAGE_ID के साथ। अप्रकाशित पृष्ठ false लौटाएंगे, और प्रकाशित किए गए लोग जानकारी के JSON सरणी वापस कर देंगे।

इसके लिए किसी भी एक्सेस टोकन या अनुमतियों की आवश्यकता नहीं है।

cURL (कमांड लाइन)

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

का उपयोग httpclient (रेल के साथ)

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\".... 

$ .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

यह गलत है। प्रतिबंधों वाले पेज भी झूठी वापसी करेंगे, जैसा शराब को बढ़ावा देने वाले पृष्ठों के मामले में है। Http://graph.facebook.com/KeystoneLight आज़माएं और आप देखेंगे कि यह पृष्ठ लौटा हुआ है, भले ही यह झूठा हो। –

+0

जेफ सही है। मैं बस एक ही निष्कर्ष पर आया और इस जानकारी के साथ अपना मूल प्रश्न अपडेट किया। –

+0

आपके उत्तर के लिए धन्यवाद जूलियो। यह 100% सही नहीं है, लेकिन यह अभी भी एक बहुत ही जानकारीपूर्ण उत्तर है, इसलिए आपको बक्षीस मिलती है। –

0

यदि आप access_token का उपयोग करते हैं तो आप केवल पृष्ठ देख पाएंगे जो अनुरोध में पृष्ठ देख सकता है।

आप हमेशा उन पृष्ठों को देखेंगे जिन्हें आप फेसबुक पर access_token उपयोगकर्ता के साथ देखेंगे।

KeystoneLight के लिए अपने खुद के access_token उदाहरण के लिए ऊपर के उदाहरण अभी भी AjiRestaurant के लिए false उपज है में, लेकिन मैं मिल जाएगा जानकारियां उपयोग करना ठीक के रूप में मेरे खाते प्रतिबंध मेल खाता है।

2

यह पता चला है कि यह देखने के लिए कोई ज्ञात तरीका नहीं है कि कोई पृष्ठ प्रकाशित/अप्रकाशित है या नहीं।ग्राफ एपीआई http://graph.facebook.com/ {page_id} अवास्तविक लौटाते हैं, तो निम्न में से कोई भी सत्य है:

  • पृष्ठ अप्रकाशित
  • पृष्ठ देश प्रतिबंध है
  • पृष्ठ आयु प्रतिबंध

हैं और केवल है यदि उपर्युक्त सेटिंग्स में से कोई भी लागू नहीं होता है, तो http://graph.facebook.com/ {page_id} ऑब्जेक्ट ग्राफ़ लौटाएगा।

नोट: मुझे लगता है कि उपरोक्त एपीआई कॉल के लिए manage_pages अनुमति के साथ एक एक्सेस टोकन का उपयोग नहीं किया जाता है। उचित पहुंच टोकन के साथ, https://graph.facebook.com/ {page_id} ऑब्जेक्ट ग्राफ़ वापस कर देगा, इस पर ध्यान दिए बिना कि पृष्ठ पर प्रतिबंध हैं या नहीं।

संबंधित मुद्दे