फेसबुक: उन पृष्ठों की सूची प्राप्त करें जो एक उपयोगकर्ता के व्यवस्थापक हैं


84

मैं ग्राफ एपीआई का उपयोग कर रहा हूं।

मेरे पास उपयोगकर्ता में लॉग इन है, और उन सभी पेजों के पेज आईडी की सूची वापस प्राप्त करना चाहते हैं जो उपयोगकर्ता का एक व्यवस्थापक है।

क्या इसे करने का कोई तरीका है? डॉक्स बहुत खराब हैं - और परिपत्र।


3
10 साल बाद, और प्रलेखन अभी भी खराब है।
डार्कवॉन्डर

जवाबों:


142

ग्राफ एपीआई के साथ इसका सरल। कदम:

  1. जाओ manage_pagesउपयोगकर्ता (विस्तारित अनुमतियाँ) से अनुमति।
  2. ग्राफ एपीआई पर कॉल करें - https://graph.facebook.com/me/accounts

आप ग्राफ एक्सप्लोरर में इस प्रक्रिया का परीक्षण कर सकते हैं -> 'एक्सटेंडेड एक्सेस टोकन' बटन पर क्लिक करें- > 'एक्सटेंडेड अनुमति' चेक 'मैनेज_पज' के तहत और सबमिट करें। यह आपको व्यवस्थापक-पृष्ठ-विवरण JSON देगा।


11
स्विचिंग उत्तरों को ऐसा लगता है जैसे इसे करने का अधिक मानक / स्थिर तरीका। हालांकि मैं 'सरल' शब्द के किसी भी उपयोग के खिलाफ चेतावनी
दूंगा

1
फिर। आप सही हैं। लेकिन एक समस्या के कई समाधान हो सकते हैं। हमें उनमें से सबसे सरल चुनने की जरूरत है।
अवीसेक चक्रवर्ती

1
यदि आप FB PHP SDK का उपयोग कर रहे हैं तो यह आसान है: सिर्फ $ user_admin_pages = $ facebok-> api ('/ me / accounts');
जेपर्स बर्नार्डिनो

2
FQL के साथ क्वेरी करने का लाभ एक ग्राफ अनुरोध का उपयोग करते हुए यह है कि ग्राफ़ हमेशा लौटाए गए डेटा को 'पृष्ठांकित' करने के लिए मजबूर करता है (यह केवल पहले कुछ परिणाम देता है, और अगले कुछ के लिए एक लिंक) - जबकि FQL में यह हमेशा वापस लौटता है एक समय में पूरे परिणाम-सेट।
युवल ए।

5
धन्यवाद। यह तभी पृष्ठों को सूचीबद्ध करता है, जब वर्तमान उपयोगकर्ता ऐप का प्रबंधन करता है। क्या किसी अन्य व्यक्ति के पृष्ठों को सूचीबद्ध करने का कोई तरीका है?
सोराजलाल केजी

14

मैंने इसे कुछ FQL के साथ हल किया:

FB.api({method: 'fql.multiquery',
        access_token: <access_token>,
        queries: {
            query1: 'select page_id from page_admin where uid = ' + <uid>,
            query2: 'select page_id, name, page_url from page where page_id in (select page_id from #query1)'
        }
       }, function(queries){
           var pages = queries[1].fql_result_set;
       }}

5
अगस्त 2014 तक: "FQL और REST API अब v2.1 में उपलब्ध नहीं हैं: पूर्व में v2.0 के साथ घोषित किया गया था, ऐप्स को v2.1 के साथ शुरू होने वाले ग्राफ एपीआई कॉल पर विस्थापित होना चाहिए।" दूसरे शब्दों में, FQL का अब उपयोग नहीं किया जा सकता है।
कापितिन विटबार्ड

11

FB.api(/me/accounts)यदि आप FQL का उपयोग नहीं करना चाहते हैं तो आप कॉल कर सकते हैं।

'अकाउंट्स' यूजर ऑब्जेक्ट का एक कनेक्शन है। इसके लिए दस्तावेज देखें @ http://developers.facebook.com/docs/reference/api/user

बेशक, फेसबुक के साथ, हमेशा एक पकड़ है। अभी यह विधि न केवल उन पृष्ठों को लौटाएगी, जिनके उपयोगकर्ता एक व्यवस्थापक हैं, बल्कि यह भी कि उन्होंने कौन से एप्लिकेशन इंस्टॉल किए हैं। मैं लगभग सकारात्मक हूं यह अभिप्रेत व्यवहार नहीं है - मुझे लगता है कि कुछ महीनों पहले इसका उपयोग करना याद है और केवल पृष्ठों की सूची प्राप्त करना है। प्रलेखन इस सूची में अनुप्रयोगों का कोई उल्लेख नहीं करता है।

हालांकि यह हल करने के लिए एक आसान समस्या है - फेसबुक सूची में प्रत्येक आइटम के लिए नाम, श्रेणी और आईडी लौटाता है, और प्रत्येक आवेदन में 'एप्लिकेशन' की एक श्रेणी होती है। मैं केवल यह सुनिश्चित कर रहा हूं कि मैं केवल उन वस्तुओं को सूचीबद्ध करूं जिनकी श्रेणी 'अनुप्रयोग' नहीं है।


1
दिसंबर 2012 तक, 'खातों' के प्रलेखन में कहा गया है कि यह उन पृष्ठों और ऐप्स को लौटाएगा जो उपयोगकर्ता के पास हैं।
ऑबस्क्योररोबॉट

किसी अन्य व्यक्ति के पृष्ठों को सूचीबद्ध करने के लिए किसी भी तरह से
रोमांचित है

@SoorajlalKG नहीं, आपको ऐसा करने की अनुमति नहीं होगी।
रैप्टर

11

इस पते पर जाएं

https://developers.facebook.com/tools/explorer/431294226918345/?method=GET&path=me%2Faccounts%3Ftype%3Dpage `

बस एक्सेस टोकन पर क्लिक करें और विस्तारित अनुमति पर जाएं

Check_pages चेकबॉक्स की जाँच करें

और गेट टोकन प्राप्त करें पर क्लिक करें

फिर FQL के तहत यह लिखें

मुझे / खातों? type = पेज

सबमिट पर क्लिक करें। और आपको उपयोगकर्ता व्यवस्थापक में लॉग इन सभी पृष्ठ सूचियां मिलेंगी


5
आपने कहां पाया है कि क्वेरी पैरामीटर me/accountsका समर्थन करता है type?
सर्ज एस।

7

आप लॉगिन पर जावास्क्रिप्ट एसडीके के साथ अनुमति के लिए पूछें

FB.login(function(){}, {perms:'manage_pages'});

और फिर एक बार जब वे लॉग इन करते हैं तो आप निम्न पृष्ठों (और ऐप्स) को पुनः प्राप्त कर सकते हैं:

FB.api('/me/accounts', function(response){
    console.log(response);
})

4
बीच क्या अंतर है {perms: 'manage_pages'}और {scope: 'manage_pages'}?
कीस सी। बक्कर

6

आप "Pages_show_list" अनुमति का भी उपयोग कर सकते हैं, यदि आप केवल उन फेसबुक पेजों की सूची चाहते हैं, जिनका उपयोगकर्ता व्यवस्थापक है।

"Manage_pages" अनुमति उपयोगकर्ता को अपने पृष्ठों को प्रबंधित करने की अनुमति मांगेगी, जो आपके लिए इसकी आवश्यकता के आधार पर बहुत अधिक घुसपैठ हो सकता है।


5

ध्यान दें कि आपका समाधान पृष्ठ और साथ ही अनुप्रयोग लौटाता है । यदि आप पृष्ठ सख्ती से चाहते हैं, तो आप इस तरह के "टाइप न के बराबर" क्लॉज के साथ FQL मल्टीकेरी का उपयोग कर सकते हैं:

{
"query1":"select page_id from page_admin where uid = me()",
"query2":"select page_id, name, page_url, type from page where type!='APPLICATION' AND page_id in (select page_id from #query1)"
}


1
<head>
 <link rel="stylesheet" href="@Url.Content("~/Content/jquery.remodal.css")">
</head>

<body>
<script type="text/javascript" src="@Url.Content("~/Scripts/Home/jquery.remodal.js")"></script>
<div class="remodal" id="page-selector-remodal" data-remodal-id="pageselector">
        <p>Please select a facebook page Share </p>
        <div id="page-name-container">
            <select id="page-name" class="form-control">
            </select>
        </div>
        <a class="remodal-confirm" id="facebookPageSelectSubmit" href="#">OK</a>
        <a class="remodal-cancel" id="remodal-cancel" href="#">CANCEL</a>
    </div>

    <div data-remodal-id="modal-status">
        <p id="modal-status-content">
            The Account you have selected does not have Email.
        </p>
        <br>
        <a class="remodal-confirm" href="#">OK</a>
    </div>
<script type="text/javascript>
 (function (d, s, id) {
            var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) return;
            js = d.createElement(s);
            js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
        }(document, 'script', 'facebook-jssdk'));

        window.fbAsyncInit = function () {
            FB.init({
                appId: 'YOUR APP ID',
                cookie: true,  // enable cookies to allow the server to access 
                // the session
                xfbml: true,  // parse social plugins on this page
                version: 'v2.2' // use version 2.1
            });
        };

        var pageSelector = $('[data-remodal-id=pageselector]').remodal();
        var modalstatus = $('[data-remodal-id=modal-status]').remodal();

        function statusChangeCallback(response) {

            if (response.status === 'connected') {
                // Logged into your app and Facebook.
                //testAPI();
            } else if (response.status === 'not_authorized') {
                // The person is logged into Facebook, but not your app.
                $("#modal-status-content").empty().html(response.status);
                modalstatus.open();
            }

            else {
                $("#modal-status-content").empty().html(response.status);
                modalstatus.open();
                // The person is not logged into Facebook, so we're not sure if
                // they are logged into this app or not.
                document.getElementById('status').innerHTML = 'Please log ' +
                    'into Facebook.';
            }
        }


        function FacebookHandler() {
            FB.login(function (result) {
                if (result != null && result.authResponse != null && result.authResponse != undefined) {
                    facebookPageData = result;
                    FB.api('/me/accounts', function (accountsResult) {
                        if (accountsResult != null && accountsResult.data.length != 0) {
                            //open the remodal here
                            pageSelector.open();
                            facebookAccountsData = accountsResult;
                            var data = accountsResult['data'];
                            if (data != null) {
                                for (var i = 0; i < data.length; i++) {
                                    $("#page-name").append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
                                }
                            }
                            unblockUI('body');
                            $("#flip-container, #feature-container, #branding-container, #intro-arrow-container, #share-container, #copyright-text-container").hide();
                            $("body").css("padding-right", "0");
                        }
                        else {
                            $("#modal-status-content").empty().html("The Account you have selected does not have any facebook page,<br />Post to Wall.");
                            modalstatus.open();
                            pageSelector.open();
                            unblockUI('body');
                        }
                    });
                }
                else {
                    $("#modal-status-content").empty().html("Unable to retrieve your details from facebook, try again after sometime.");
                    modalstatus.open();
                    unblockUI('body');
                }
            }, { scope: 'manage_pages, publish_stream' });
        }

        $("#facebookPageSelectSubmit").on("click", function () {
            var facebookpageId = $("#page-name option:selected").val();
            if (facebookpageId != null) {
                FB.api('/' + facebookpageId, function (identity) {

                    if (identity != null) {
                        FB.api('/' + facebookpageId, { fields: 'access_token' }, function (resp) {
                            if (resp.access_token != null) {
                                //Get the "resp"(Data) here
                        }
                        else {

                        }

                    });
                }

                else {

                }
            });
        }
        else {

        }
    });
</script>

//Finally call the "FacebookHandler()" function on click


</body>

आप अपने कोड में कुछ चौखटे का उपयोग करते हैं, क्या आप इसे समझाना चाहेंगे?
रैप्टर

सिर्फ एक कोड पोस्ट करना मेरे विचार से, एक अच्छा जवाब नहीं है।
इगोरज़ोविस्क

0

जावास्क्रिप्ट के साथ नए GRAPH API v3 में 'पर्म' फ़ील्ड के बजाय 'टास्क' फ़ील्ड का उपयोग करें।

//Example JS Call
FB.api('/me/accounts?fields=name,picture.type(square),access_token,tasks', function(response) {console.log(response)});

//Example Response
{
      "name": "Engage",
      "picture": {
        "data": {
          "height": 50,
          "is_silhouette": false,
          "url": "https://scontent.xx.fbcdn.net/v/t1.0-1/c1.0.50.50a/p50x50/430597_259746387431503_2144341304_n.jpg?_nc_cat=103&_nc_eui2=AeGVrU8Wxe7k5BMvRXOEAcUo9dMIxyeMP9POPkYDwfgdRl8QquAtz1GcwXpJaK4z_0o&_nc_ht=scontent.xx&oh=e5b952a4adbbcd1b1af6b71b688f7284&oe=5CF9A64C",
          "width": 50
        }
      },
      "access_token": "XXXXXXXXXX",
      "id": "253263371413138",
      "tasks": [
        "ANALYZE",
        "ADVERTISE",
        "MODERATE",
        "CREATE_CONTENT",
        "MANAGE"
      ]
    }

सरणी के भीतर 'ADMINISTER' देखने के बजाय, 'MANAGE' देखें।

यहां पूरी जानकारी: https://developers.facebook.com/docs/pages/access-tokens

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.