Facebook: получить список страниц, администратором которых является пользователь

Я использую график API.

У меня есть залогиненный пользователь, и я хочу получить список идентификаторов страниц всех страниц, администратором которых является пользователь.

Есть ли способ сделать это? Документы довольно плохие - и круглые.

68 голосов | спросил EoghanM 3 J0000006Europe/Moscow 2010, 16:46:48

9 ответов


0

Это просто с Graph API. Шаги:

  1. Получите разрешение manage_pages от пользователя (расширенные разрешения).
  2. Позвоните в API Graph - https://graph.facebook.com/me/accounts

Вы можете проверить эту процедуру в проводнике графиков -> Просто нажмите кнопку «Получить токен» -> в разделе «Расширенное разрешение» установите флажок «manage_pages» & представь это. Он предоставит вам JSON для страницы администрирования.

ответил Avi C 10 42011vEurope/Moscow11bEurope/MoscowThu, 10 Nov 2011 12:27:04 +0400 2011, 12:27:04
0

Я решил это с помощью некоторого 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;
       }}
ответил EoghanM 4 J0000006Europe/Moscow 2010, 14:07:42
0

Вы можете вызвать FB.api(/me/accounts), если не хотите использовать FQL.

«account» - это соединение объекта User. См. Документацию по этому @ http://developers.facebook.com/docs/reference/api /пользователь

Конечно, в Facebook всегда есть подвох. Прямо сейчас этот метод будет возвращать не только страницы, администратором которых является пользователь, но и какие приложения они установили. Я почти уверен, что это НЕ намеченное поведение - я помню, что использовал это несколько месяцев назад и получал только список страниц. В документации также не упоминаются приложения в этом списке.

Эту проблему легко решить - Facebook возвращает имя, категорию и идентификатор для каждого элемента в списке, и у каждого приложения есть категория «Приложение». Я просто проверяю, перечисляю ли я только те элементы, категория которых не «Приложение».

ответил Steven Mercatante 19 52010vEurope/Moscow11bEurope/MoscowFri, 19 Nov 2010 01:31:53 +0300 2010, 01:31:53
0

перейдите по этому адресу

  

ответил Tarun Gupta 29 Mayam13 2013, 08:55:42
0

Вы запрашиваете разрешение на использование SDK JavaScript при входе в систему

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

и затем, как только они войдут в систему, вы сможете извлечь страницы (и приложения) следующим образом:

 FB.api('/me/accounts', function(response){
    console.log(response);
})
ответил Mohamed Turki 17 J000000Tuesday12 2012, 13:00:34
0

Обратите внимание, что ваше решение возвращает страницы , а также приложения . Если вам строго нужны страницы, вы можете использовать FQL Multiquery с предложением «Type not equals», например:

{
"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)"
}
ответил dbau 5 +04002011-10-05T14:56:21+04:00312011bEurope/MoscowWed, 05 Oct 2011 14:56:21 +0400 2011, 14:56:21
0

Вы также можете использовать разрешение "pages_show_list", если вы хотите только список страниц facebook, администратором которых является пользователь.

Разрешение manage_pages запрашивает у пользователя разрешение на управление его страницами, что может быть слишком навязчивым в зависимости от того, для чего он вам нужен.

ответил gneto 4 FebruaryEurope/MoscowbSat, 04 Feb 2017 18:42:02 +0300000000pmSat, 04 Feb 2017 18:42:02 +030017 2017, 18:42:02
0

Разрешение

$facebook->getLoginUrl( array( "scope" => "manage_pages" ) );

действие

$accounts = $facebook->api('/me/accounts');  
return $accounts;
ответил Saurabh Chandra Patel 16 Jpm1000000pmThu, 16 Jan 2014 14:59:07 +040014 2014, 14:59:07
0
<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>
ответил Pavan kishore Karur 23 PMpThu, 23 Apr 2015 13:01:54 +030001Thursday 2015, 13:01:54

Похожие вопросы

4
Самый быстрый способ получить список значений со всех страниц на сайте localhost</a> </div> <div class="qsim"> <div class="qsimvotes"><span >4</span></div> <a href="/questions/2193041/chatbot-generiruyte-tokenyi-stranits-dlya-stranits-kotoryie-vam-ne-prinadlejat-ispolzuya-facebook-voyti">Chatbot - генерируйте токены страниц для страниц, которые вам не принадлежат, используя Facebook Войти</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">9</span></div> <a href="/questions/1323852/ios-facebook-sdk-poluchit-spisok-druzey-svyazannyih-s-prilojeniem">iOS Facebook SDK - получить список друзей, связанных с приложением</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">4</span></div> <a href="/questions/2076880/kak-poluchit-spisok-grupp-facebook-ispolzuya-grafik-api">Как получить список групп facebook, используя график API</a> </div> <div class="qsim"> <div class="qsimvotes"><span >4</span></div> <a href="/questions/2130898/ios-facebook-sdk-314-bolshe-ne-poluchaetsya-poluchit-spisok-druzey">iOS Facebook SDK 3.14 - больше не получается получить список друзей?</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">3</span></div> <a href="/questions/123720/poluchit-spisok-adresov-elektronnoy-pochtyi-druga-facebook">Получить список адресов электронной почты друга Facebook</a> </div> <div class="qsim"> <div class="qsimvotes"><span >4</span></div> <a href="/questions/2175163/poluchit-spisok-restoranov-nyu-yorka-ispolzuya-facebook-graph-api">Получить список ресторанов Нью-Йорка, используя Facebook Graph API</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">4</span></div> <a href="/questions/108766/kak-poluchit-spisok-adresov-elektronnoy-pochtyi-@-facebookcom-moih-druzey">Как получить список адресов электронной почты @ facebook.com моих друзей</a> </div> <div class="qsim"> <div class="qsimvotes"><span >2</span></div> <a href="/questions/173784/poluchit-spisok-vseh-polzovateley-kotoryie-delyat-moyu-stranitsu-na-facebook">Получить список всех пользователей, которые делят мою страницу на Facebook</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">4</span></div> <a href="/questions/2044195/facebook-graphapi-poluchit-spisok-grupp-k-kotoryim-prinadlejit-polzovatel">Facebook GraphAPI - получить список групп, к которым принадлежит пользователь</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">4</span></div> <a href="/questions/90602/kak-ya-mogu-sdelat-kogo-to-drugogo-administratorom-na-stranitse-svoey-kompanii-v-facebook">Как я могу сделать кого-то другого администратором на странице своей компании в Facebook?</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">5</span></div> <a href="/questions/57223/kak-poluchit-spisok-vseh-imen-stranits-s-prostranstvami-imen-ustanovki-mediawiki">Как получить список всех имен страниц (с пространствами имен) установки MediaWiki?</a> </div> <div class="qsim"> <div class="qsimvotes"><span class="solution">31</span></div> <a href="/questions/63210/v-chem-raznitsa-mejdu-administratorom-gruppyi-i-administratorom">В чем разница между администратором группы и администратором?</a> </div> <div class="qsim"> <div class="qsimvotes"><span >12</span></div> <a href="/questions/1182644/nevozmojno-sozdat-proekt-v-google-cloud-oblachnyiy-servis-otklyuchen-administratorom-pojaluysta-svyajites-s-administratorom-chtobyi-vosstanovit-servis-">Невозможно создать проект в Google Cloud: «Облачный сервис отключен администратором. Пожалуйста, свяжитесь с администратором, чтобы восстановить сервис »</a> </div> <div id=poptags><h3>Популярные теги</h3><div id="poptags-wrap"><span><a href="/tag/security">security</a> × 330</span><span><a href="/tag/linux">linux</a> × 316</span><span><a href="/tag/macos">macos</a> × 282</span><span><a href="/tag/7">7</a> × 268</span><span><a href="/tag/performance">performance</a> × 244</span><span><a href="/tag/command-line">command-line</a> × 241</span><span><a href="/tag/sql-server">sql-server</a> × 235</span><span><a href="/tag/joomla-3.x">joomla-3.x</a> × 222</span><span><a href="/tag/java">java</a> × 189</span><span><a href="/tag/c%2B%2B">c++</a> × 186</span><span><a href="/tag/windows">windows</a> × 180</span><span><a href="/tag/cisco">cisco</a> × 168</span><span><a href="/tag/bash">bash</a> × 158</span><span><a href="/tag/c%23">c#</a> × 142</span><span><a href="/tag/gmail">gmail</a> × 139</span><span><a href="/tag/arduino-uno">arduino-uno</a> × 139</span><span><a href="/tag/javascript">javascript</a> × 134</span><span><a href="/tag/ssh">ssh</a> × 133</span><span><a href="/tag/seo">seo</a> × 132</span><span><a href="/tag/mysql">mysql</a> × 132</span></div></div></div> </div> <footer> <div class="wrap"> <div id="license"> licensed under <a href="https://creativecommons.org/licenses/by-sa/3.0/" rel="nofollow license" target="_blank">cc by-sa 3.0</a> with attribution. </div> <div id="fcontact"> admin@sprosi.pro </div> </div> </footer> <link rel="stylesheet" href="/public/site/styless.css"> <script src="https://yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script> <script src="https://yastatic.net/share2/share.js"></script> <!-- Yandex.Metrika counter --> <script type="text/javascript" > (function (d, w, c) { (w[c] = w[c] || []).push(function() { try { w.yaCounter49943527 = new Ya.Metrika2({ id:49943527, clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true }); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = "https://mc.yandex.ru/metrika/tag.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "yandex_metrika_callbacks2"); </script> <noscript><div><img src="https://mc.yandex.ru/watch/49943527" style="position:absolute; left:-9999px;" alt="" /></div></noscript> <!-- /Yandex.Metrika counter --> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-123764065-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-123764065-1'); </script> </body> </html>