Facebook:获取用户管理的页面列表

Eog*_*anM 75 facebook facebook-page facebook-graph-api

我正在使用图形api.

我有一个登录用户,想要获取用户所管理的所有页面的页面ID列表.

有办法做到这一点吗?文档非常糟糕 - 而且是循环的.

Avi*_*i C 136

它简单易用Graph API.脚步:

  1. 获取manage_pages用户的权限(扩展权限).
  2. 调用Graph API - https://graph.facebook.com/me/accounts

您可以在图形浏览器中测试此过程- >只需单击"获取访问令牌"按钮 - > "扩展权限" "manage_pages"并提交.它将为您提供admin-page-details JSON.

  • 切换答案,因为这听起来像更标准/稳定的方式.虽然我会警告不要使用"简单"这个词:一旦你知道如何,一切都很简单:) (10认同)
  • 谢谢.它仅在当前用户管理应用程序时列出页面.有没有办法列出另一个人的页面? (4认同)
  • 使用FQL查询与使用图形请求的优势在于图形总是强制返回的数据被"分页"(它只返回前几个结果,以及指向下一个结果的链接) - 而在FQL中它总是返回一次性完成整个结果. (2认同)

Eog*_*anM 13

我用一些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;
       }}
Run Code Online (Sandbox Code Playgroud)

  • 截至2014年8月:"v2.1中不再提供FQL和REST API:以前在v2.0中宣布,应用程序必须从v2.1开始迁移到版本化的Graph API调用." 换句话说,不再使用FQL. (4认同)

Ste*_*nte 11

FB.api(/me/accounts)如果您不想使用FQL,可以调用.

'accounts'是User对象的连接.请参阅此文档@ http://developers.facebook.com/docs/reference/api/user

当然,有了Facebook,总有一个问题.现在,此方法不仅会返回用户管理的页面,还会返回他们安装的应用程序.我几乎肯定这不是预期的行为 - 我似乎记得几个月前使用它并且只得到一个页面列表.该文档也未提及此列表中的应用程序.

这是一个容易解决的问题--Facebook会返回列表中每个项目的名称,类别和ID,每个应用程序都有一个"应用程序"类别.我只是确保我只列出其类别不是"应用程序"的项目.


Tar*_*pta 10

去这个地址

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

只需单击获取访问令牌并转到扩展权限

检查manage_pages复选框

单击"获取访问令牌"

然后在FQL下写这个

我/帐户?类型=页面

点击提交.并且您将获得登录用户admin的所有页面列表

  • 您在哪里发现“ me / accounts”支持“ type”查询参数? (4认同)

Moh*_*rki 7

您在登录时请求JavaScript SDK的权限

FB.login(function(){}, {perms:'manage_pages'});
Run Code Online (Sandbox Code Playgroud)

然后,一旦他们登录,您可以检索页面(和应用程序),如下所示:

FB.api('/me/accounts', function(response){
    console.log(response);
})
Run Code Online (Sandbox Code Playgroud)

  • `{perms:'manage_pages'}`和`{scope:'manage_pages'}`有什么区别? (3认同)

gln*_*eto 6

如果您只想要用户管理的Facebook页面列表,您还可以使用"pages_show_list"权限.

"manage_pages"权限将要求用户管理其页面的权限,这可能会过于干扰,具体取决于您的需要.


dba*_*bau 5

请注意,您的解决方案会返回Pages 和Applications.如果您严格要求Pages,则可以使用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)"
}
Run Code Online (Sandbox Code Playgroud)


Sau*_*tel 5

允许

$facebook->getLoginUrl( array( "scope" => "manage_pages" ) );
Run Code Online (Sandbox Code Playgroud)

行动

$accounts = $facebook->api('/me/accounts');  
return $accounts;
Run Code Online (Sandbox Code Playgroud)