Eog*_*anM 75 facebook facebook-page facebook-graph-api
我正在使用图形api.
我有一个登录用户,想要获取用户所管理的所有页面的页面ID列表.
有办法做到这一点吗?文档非常糟糕 - 而且是循环的.
Avi*_*i C 136
它简单易用Graph API.脚步:
manage_pages用户的权限(扩展权限).您可以在图形浏览器中测试此过程- >只需单击"获取访问令牌"按钮 - > "扩展权限"下的 "manage_pages"并提交.它将为您提供admin-page-details JSON.
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)
Ste*_*nte 11
FB.api(/me/accounts)如果您不想使用FQL,可以调用.
'accounts'是User对象的连接.请参阅此文档@ http://developers.facebook.com/docs/reference/api/user
当然,有了Facebook,总有一个问题.现在,此方法不仅会返回用户管理的页面,还会返回他们安装的应用程序.我几乎肯定这不是预期的行为 - 我似乎记得几个月前使用它并且只得到一个页面列表.该文档也未提及此列表中的应用程序.
这是一个容易解决的问题--Facebook会返回列表中每个项目的名称,类别和ID,每个应用程序都有一个"应用程序"类别.我只是确保我只列出其类别不是"应用程序"的项目.
您在登录时请求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)
如果您只想要用户管理的Facebook页面列表,您还可以使用"pages_show_list"权限.
"manage_pages"权限将要求用户管理其页面的权限,这可能会过于干扰,具体取决于您的需要.
请注意,您的解决方案会返回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)
允许
$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)
| 归档时间: |
|
| 查看次数: |
86942 次 |
| 最近记录: |