ফেসবুক: পৃষ্ঠাগুলির তালিকা পান যা কোনও ব্যবহারকারী প্রশাসক


85

আমি গ্রাফ এপিআই ব্যবহার করছি।

আমার একটি লগ ইন আছে, এবং ব্যবহারকারী যে প্রশাসকের প্রশাসক সে সমস্ত পৃষ্ঠার পৃষ্ঠা আইডির একটি তালিকা ফিরে পেতে চাই।

এটি করার কোনও উপায় আছে? দস্তাবেজগুলি বেশ খারাপ - এবং বিজ্ঞপ্তি।


4
10 বছর পরে, এবং ডকুমেন্টেশন এখনও খারাপ।
ডার্কওয়ন্ডার

উত্তর:


144

গ্রাফ এপিআই সহ এটি সহজ। পদক্ষেপ:

  1. পান manage_pagesব্যবহারকারী (বর্ধিত অনুমতি) থেকে অনুমতি নেই।
  2. গ্রাফ এপিআই কল করুন - https: //راف.facebook.com/me/accounts

আপনি এই প্রক্রিয়াটি গ্রাফ এক্সপ্লোরারটিতে পরীক্ষা করতে পারেন -> 'বর্ধিত অনুমতি' চেক 'ম্যানেজ_পেজ' এর অধীনে ' এক্সেস টোকেন পান ' বোতামটি ক্লিক করুন এবং এটি জমা দিন। এটি আপনাকে অ্যাডমিন-পৃষ্ঠা-বিশদ JSON দেবে।


11
উত্তরগুলি এটিকে আরও স্ট্যান্ডার্ড / স্থিতিশীল করার মতো বলে মনে হচ্ছে। যদিও আমি 'সরল' শব্দের যে কোনও ব্যবহারের বিরুদ্ধে সতর্ক করব: আপনি কীভাবে জানবেন একবারেই সবকিছু সহজ হয় :)
EoghanM

4
হ্যাঁ তোমার অধিকার R. তবে সমস্যার বেশ কয়েকটি সমাধান হতে পারে। আমাদের মধ্যে তাদের মধ্যে সহজতমটি বেছে নেওয়া দরকার।
আভিসেক চক্রবর্তী 12

4
আপনি যদি এফবি পিএইচপি এসডিকে ব্যবহার করেন তবে এটি আরও সহজ: কেবলমাত্র $ ব্যবহারকারীর_মিনি_পৃষ্ঠা = $ ফেসবুক-> এপিআই ('/ আমার / অ্যাকাউন্টস');
জেপসার বার্নার্ডিনো

4
এফকিউএল বনাম সম্পর্কিত একটি গ্রাফ অনুরোধ ব্যবহার করে জিজ্ঞাসা করার সুবিধা হ'ল গ্রাফ সর্বদা ফিরে আসা ডেটাগুলিকে 'পেজড' করতে বাধ্য করে (এটি কেবল প্রথম কয়েকটি ফলাফল এবং পরবর্তী কয়েকটির একটি লিঙ্ক দেয়) - যখন এফকিউএলে এটি সর্বদা ফিরে আসে একবারে সম্পূর্ণ ফলাফল সেট।
যুবাল এ।

4
ধন্যবাদ এটি পৃষ্ঠাগুলি তালিকাবদ্ধ করে যদি বর্তমান ব্যবহারকারী অ্যাপটি পরিচালনা করে। অন্য ব্যক্তির পৃষ্ঠাগুলি তালিকাভুক্ত করার কোনও উপায় আছে কি?
সুরজলাল কেজি

14

আমি কিছু এফকিউএল দিয়ে এটি সমাধান করেছি:

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;
       }}

4
আগস্ট ২০১৪ পর্যন্ত: "এফকিউএল এবং আরএসটি এপিআইগুলি আর ভি ২.১-তে আর উপলভ্য নয়: পূর্বে v2.0 দিয়ে ঘোষিত হয়েছে, অ্যাপ্লিকেশনগুলিকে v2.1 দিয়ে সংস্করণযুক্ত গ্রাফ এপিআই কলগুলিতে স্থানান্তর করতে হবে" " অন্য কথায়, এফকিউএল আর ব্যবহার করা যাবে না।
কাপাইটাইন উইটবার্ড

11

আপনি FB.api(/me/accounts)এফকিউএল ব্যবহার করতে না চাইলে আপনি কল করতে পারেন।

'অ্যাকাউন্টস' ইউজার অবজেক্টের একটি সংযোগ। এই @ http://developers.facebook.com/docs/references/api/user এর জন্য ডকুমেন্টেশন দেখুন

অবশ্যই, ফেসবুকের সাথে, সবসময় একটি ক্যাচ থাকে। এই মুহূর্তে এই পদ্ধতিটি ব্যবহারকারী কেবল যে পৃষ্ঠাগুলির প্রশাসক হিসাবে প্রশাসক তা নয়, তবে তারা কী অ্যাপ্লিকেশনগুলি ইনস্টল করেছে তাও ফিরিয়ে দেবে। আমি প্রায় ইতিবাচক এটি উদ্দেশ্যমূলক আচরণ নয় - মনে হয় কয়েক মাস আগে এটি ব্যবহার করা এবং কেবল পৃষ্ঠাগুলির একটি তালিকা পেয়েছিলাম। ডকুমেন্টেশনগুলি এই তালিকায় অ্যাপ্লিকেশনগুলির কোনও উল্লেখ করে না।

যদিও এটি সমাধান করা সহজ সমস্যা - ফেসবুক তালিকার প্রতিটি আইটেমের নাম, বিভাগ এবং আইডি ফিরিয়ে দেয় এবং প্রতিটি অ্যাপ্লিকেশনটিতে 'অ্যাপ্লিকেশন' এর বিভাগ রয়েছে। আমি কেবল নিশ্চিত করছি যে আমি কেবলমাত্র এমন আইটেমগুলি তালিকাবদ্ধ করছি যার বিভাগটি 'অ্যাপ্লিকেশন' নয়।


4
ডিসেম্বর ২০১২ পর্যন্ত, 'অ্যাকাউন্টস' এর জন্য ডকুমেন্টেশনে বলা হয়েছে যে এটি পৃষ্ঠার এবং ব্যবহারকারীদের মালিকানাধীন অ্যাপ্লিকেশনগুলি ফিরিয়ে দেবে।
অস্পষ্টরবোট

অন্য কোনও ব্যক্তির পৃষ্ঠাগুলি
তালিকাবদ্ধ করতে কোনওভাবেই উত্তম

@ সুরজলাল কেজি না, আপনার কাছে এটি করার অনুমতি থাকবে না।
র‌্যাপটার

11

এই ঠিকানায় যান

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

কেবল অ্যাক্সেস টোকেন এ ক্লিক করুন এবং বর্ধিত অনুমতিতে যান

ম্যানেজ_পেজসমূহ চেকবক্সটি পরীক্ষা করুন

এবং অ্যাক্সেস টোকেন পান ক্লিক করুন

তারপরে এফকিউএল এর অধীনে এটি লিখুন

আমি / অ্যাকাউন্টস? টাইপ = পৃষ্ঠা

জমাতে ক্লিক করুন। এবং আপনি ব্যবহারকারীর প্রশাসকগুলিতে লগ ইন করা সমস্ত পৃষ্ঠা তালিকা পাবেন


4
কোয়েরি প্যারামিটার 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

আপনি যদি ব্যবহারকারীদের প্রশাসক কেবল ফেসবুক পৃষ্ঠাগুলির তালিকা চান তবে আপনি "পৃষ্ঠাগুলি_শোলিস্ট" অনুমতিও ব্যবহার করতে পারেন।

"ম্যানেজ_পেজগুলি" অনুমতিটি তার পৃষ্ঠাগুলি পরিচালনা করার জন্য ব্যবহারকারীর অনুমতি জিজ্ঞাসা করবে, যা আপনার যা প্রয়োজন তার উপর নির্ভর করে খুব অনুপ্রবেশকারী হতে পারে।


5

নোট করুন যে আপনার সমাধান পৃষ্ঠাগুলি পাশাপাশি অ্যাপ্লিকেশনগুলিও ফেরত দেয় । আপনি যদি পৃষ্ঠাগুলি কঠোরভাবে চান তবে আপনি "টাইপ নট ইক্যুয়াল" ক্লজটি দিয়ে এফকিউএল মাল্টিক্যারিটি ব্যবহার করতে পারেন:

{
"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

জাভাস্ক্রিপ্ট সহ নতুন গ্রাফিক এপিআই 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"
      ]
    }

অ্যারেতে 'অ্যাডমিনিস্টারের' সন্ধানের পরিবর্তে 'ম্যানেজ' সন্ধান করুন।

এখানে সম্পূর্ণ তথ্য: https://developers.facebook.com/docs/pages/access-tokens

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.