85

グラフAPIを使用しています。

ログインしているユーザーがいて、そのユーザーが管理者であるすべてのページのページ ID のリストを取得したいと考えています。

これを行う方法はありますか?ドキュメントはかなり悪いです-そして循環しています。

4

10 に答える 10

146

グラフ API を使用すると簡単です。手順:

  1. ユーザーから権限を取得しmanage_pagesます (拡張権限)。
  2. Graph API を呼び出す - https://graph.facebook.com/me/accounts

グラフ エクスプローラーでこの手順をテストできます-> [アクセス トークンの取得] ボタンをクリックするだけです -> [拡張アクセス許可] の下で[manage_pages] をチェックして送信します。admin-page-details JSON が表示されます。

于 2011-11-10T08:27:04.197 に答える
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;
       }}
于 2010-06-04T10:07:42.730 に答える
12

このアドレスに行きます

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

アクセストークンの取得をクリックして、拡張アクセス許可に移動するだけです

manage_pagesチェックボックスをオンにします

アクセストークンを取得をクリック

次に、FQLの下にこれを書きます

me/accounts?type=ページ

[送信] をクリックします。ユーザー管理者にログインしたすべてのページリストを取得します

于 2013-05-29T04:55:42.093 に答える
11

FB.api(/me/accounts)FQL を使用したくない場合は、呼び出すことができます。

「アカウント」は、ユーザー オブジェクトの接続です。この@ http://developers.facebook.com/docs/reference/api/userのドキュメントを参照してください

もちろん、Facebook には常に落とし穴があります。現在、このメソッドは、ユーザーが管理しているページだけでなく、ユーザーがインストールしたアプリケーションも返します。私はこれが意図した動作ではないことをほぼ確信しています.数か月前にこれを使用し、ページのリストのみを取得したことを覚えているようです. ドキュメントでは、このリストのアプリケーションについても言及されていません。

ただし、これは簡単に解決できます。Facebook はリストの各項目の名前、カテゴリ、および ID を返し、各アプリケーションには「アプリケーション」のカテゴリがあります。カテゴリが「アプリケーション」ではないアイテムのみをリストするようにしているだけです。

于 2010-11-18T22:31:53.900 に答える
7

ユーザーが管理しているFacebookページのリストのみが必要な場合は、「pages_show_list」権限を使用することもできます。

「manage_pages」パーミッションは、自分のページを管理するためのユーザーパーミッションを要求します。これは、必要なものによっては煩わしすぎる可能性があります。

于 2017-02-04T15:42:02.663 に答える
7

ログイン時に JavaScript SDK で許可を求める

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

ログインしたら、次のようにページ (およびアプリ) を取得できます。

FB.api('/me/accounts', function(response){
    console.log(response);
})
于 2012-07-17T09:00:34.407 に答える
5

ソリューションは Pagesと Applications を返すことに注意してください。厳密にページが必要な場合は、次のように「Type not equals」句を指定して FQL Multiquery を使用できます。

{
"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)"
}
于 2011-10-05T10:56:21.790 に答える
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>
于 2015-04-23T10:01:54.743 に答える