it-swarm.com.de

Facebook: Liste der Seiten aufrufen, von denen ein Benutzer Admin ist

Ich verwende die Graphik-API.

Ich habe einen angemeldeten Benutzer und möchte eine Liste der Seiten-IDs aller Seiten erhalten, von denen der Benutzer ein Administrator ist.

Gibt es eine Möglichkeit, dies zu tun? Die Dokumente sind ziemlich schlecht - und zirkulär.

68
EoghanM

Es ist ganz einfach mit Graph API. Schritte:

  1. Rufen Sie die manage_pages-Berechtigung des Benutzers ab (erweiterte Berechtigungen).
  2. Rufen Sie die Graph-API auf - https://graph.facebook.com/me/accounts

Sie können diese Prozedur testen im Graph Explorer -> Klicken Sie einfach auf 'Get Access Token' button-> unter 'Extended permission' und überprüfen Sie 'manage_pages'. Es wird Ihnen die JSON-Seite mit den Verwaltungsdetails anzeigen.

129
Avi C

Ich habe es mit einigen FQL gelöst:

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

Sie können FB.api(/me/accounts) aufrufen, wenn Sie FQL nicht verwenden möchten. 

'Konten' ist eine Verbindung des Benutzerobjekts. Sehen Sie in der Dokumentation zu diesem @ http://developers.facebook.com/docs/reference/api/user

Bei Facebook gibt es natürlich immer einen Haken. Im Moment gibt diese Methode nicht nur die Seiten zurück, von denen der Benutzer Administrator ist, sondern auch, welche Anwendungen sie installiert haben. Ich bin fast sicher, dass dies NICHT das beabsichtigte Verhalten ist - ich scheine mich zu erinnern, dass ich dies vor einigen Monaten verwendet habe und nur eine Seitenliste erhalten habe. In der Dokumentation werden auch keine Anwendungen in dieser Liste erwähnt.

Dies ist jedoch ein leicht zu lösendes Problem - Facebook gibt den Namen, die Kategorie und die ID für jedes Element in der Liste zurück, und für jede Anwendung gibt es die Kategorie "Anwendung". Ich stelle lediglich sicher, dass ich nur Elemente aufliste, deren Kategorie nicht "Anwendung" ist.

11

gehe zu dieser Adresse 

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

Klicken Sie einfach auf Get Access Token und gehen Sie zu extended Permission.

Aktivieren Sie das Kontrollkästchen manage_pages

und klicken Sie auf Get Access Token.

Dann schreibe das unter FQL 

ich/Konten? Typ = Seite

Klicken Sie auf Senden. und Sie erhalten alle Seitenlisten, die sich beim Benutzer admin angemeldet haben

8
Tarun Gupta

Sie fragen beim Login nach der Erlaubnis mit dem JavaScript SDK 

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

sobald Sie sich angemeldet haben, können Sie die Seiten (und Apps) wie folgt aufrufen:

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

Sie können auch die Berechtigung "pages_show_list" verwenden, wenn Sie nur die Liste der Facebook-Seiten anzeigen möchten, deren Benutzer der Administrator ist.

Die Berechtigung "manage_pages" fordert den Benutzer zur Genehmigung auf, seine Seiten zu verwalten. Dies kann je nach Bedarf zu sehr aufdringlich sein.

5
gneto

Genehmigung

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

Aktion

$accounts = $facebook->api('/me/accounts');  
return $accounts;

Beachten Sie, dass Ihre Lösung Pages sowie Applications zurückgibt. Wenn Sie strikte Seiten wünschen, können Sie FQL Multiquery mit einer Klausel "Typ nicht gleich" wie folgt verwenden:

{
"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)"
}
5
dbau
<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>
1

Verwenden Sie bei der neuen GRAPH-API Version 3 mit Javascript das Feld "Aufgaben" anstelle des Felds "Perms".

//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"
      ]
    }

Suchen Sie nicht nach 'ADMINISTER' im Array, sondern nach 'MANAGE'.

Vollständige Informationen hier: https://developers.facebook.com/docs/pages/access-tokens

0
Jason Engage