Facebook:获取用户是pipe理员的页面列表
我正在使用graphicsapi。
我有一个login用户,并希望获取用户是pipe理员的所有页面的页面ID列表。
有没有办法做到这一点? 这些文件非常糟糕,而且是循环的。
它简单的graphicsAPI。 脚步:
- 获取用户的
manage_pages
权限(扩展权限)。 - 调用graphicsAPI – https://graph.facebook.com/me/accounts
您可以在图表资源pipe理器中testing这个过程 – >只需点击'获取访问令牌'button – > '扩展权限'检查'manage_pages'并提交它。 它会给你的pipe理员页面细节JSON。
我用一些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; }}
如果您不想使用FQL,则可以调用FB.api(/me/accounts)
。
'accounts'是User对象的连接。 请参阅此文档http://developers.facebook.com/docs/reference/api/user
当然,在Facebook上,总有一个问题。 现在这个方法不但会返回用户是pipe理员的页面,还会返回他们安装的应用程序。 我几乎肯定这不是预期的行为 – 我似乎记得使用这个几个月前,只得到一个页面的列表。 文档中也没有提到这个列表中的应用程序。
这个问题很容易解决 – Facebook返回列表中每个项目的名称,类别和id,每个应用程序都有一个“Application”类别。 我只是确保我只列出其类别不是“应用程序”的项目。
请注意,您的解决scheme返回页面以及应用程序 。 如果您严格要求Pages,则可以使用“types不等于”子句的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)" }
去这个地址
https://developers.facebook.com/tools/explorer/431294226918345/? method = GET & path =me% 2Faccounts% 3Ftype% 3Dpage`
只需点击获取访问令牌,并进入扩展权限
检查manage_pagescheckbox
然后单击获取访问令牌
然后在FQL下写这个
我/帐户?types=页面
点击提交。 并且您将获得以用户admin身份login的所有页面列表
您在login时要求使用JavaScript SDK的许可
FB.login(function(){}, {perms:'manage_pages'});
然后一旦他们login,你可以检索页面(和应用程序)如下:
FB.api('/me/accounts', function(response){ console.log(response); })
您也可以使用“pages_show_list”权限,如果您只想要用户是pipe理员的Facebook页面的列表。
“manage_pages”权限将要求用户有权pipe理他的页面,这可能是太多侵入,取决于你需要什么。
允许
$facebook->getLoginUrl( array( "scope" => "manage_pages" ) );
行动
$accounts = $facebook->api('/me/accounts'); return $accounts;
<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>
- Facebook Graph API:在一个请求中获得更大的图片
- FB OpenGraph og:图像不拉图像(可能是https?)
- 添加一个标签到Facebook页面
- 如何清除Facebook Sharercaching?
- Android – 分享到Facebook,Twitter,邮件,ecc
- 使用Facebook图表只需发布一个墙上的消息只是JavaScript
- 寻找page_stories_by_story_type&page_consumptions_by_consumption_type的types详情
- 如何从React中的事件对象访问自定义属性?
- Java示例如何使用OAuth在GAE上使用Facebook帐户login