Facebook API:如何获取组成员数
我正在使用PHP客户端和FQL开发fb应用程序。看起来fb api不支持这个。使用FQL最多可以随机获得500个成员。但当团队成员超过500人时,就无法获得成员总数。 我只需要号码,不关心会员详情Facebook API:如何获取组成员数,facebook,facebook-fql,Facebook,Facebook Fql,我正在使用PHP客户端和FQL开发fb应用程序。看起来fb api不支持这个。使用FQL最多可以随机获得500个成员。但当团队成员超过500人时,就无法获得成员总数。 我只需要号码,不关心会员详情 有人能帮我吗 我实际上发现你不能,这显然是故意的。大约一个月前,我自己就想知道这一点,发现无论传递给graph api的参数是什么,都无法通过第500个成员。即使你让它从450开始,给你200,它也只能给你450-500 这是我的问题,不幸的答案是: 您应该使用组成员表上的FQL查询执行此操作,如:
有人能帮我吗 我实际上发现你不能,这显然是故意的。大约一个月前,我自己就想知道这一点,发现无论传递给graph api的参数是什么,都无法通过第500个成员。即使你让它从450开始,给你200,它也只能给你450-500 这是我的问题,不幸的答案是:
您应该使用组成员表上的FQL查询执行此操作,如:
SELECT uid FROM group_member WHERE gid = <group_id> limit 500 offset 500
从组成员中选择uid,其中gid=限制500偏移量500
这里的示例:您可以使用graph api 2.0和sdk 4.0 您可以使用下面的代码
$url1= "https://graph.facebook.com/".$gid."/members?limit=10000&access_token=".$_SESSION['fb_token'];
if(!extension_loaded('curl') && !@dl('curl_php5.so'))
{
return "";
}
$parsedUrl = parse_url($url1);
$ch = curl_init();
$options = array(
CURLOPT_URL => $url1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_TIMEOUT => 10,
CURLOPT_HTTPHEADER => array("Host: " . $parsedUrl['host']),
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => false
);
curl_setopt_array($ch, $options);
$response_count = @curl_exec($ch);
$json_count = json_decode($response_count);
foreach ($json_count as $item_count)
{
$cnt=count($item_count);
break;
}
查询:
https://graph.facebook.com/v2.11/{group-id}/members?limit=1500&access_token={token}
(用数字组标识替换{group id}
,用访问令牌替换{token}
)
您将得到如下响应:
{
"data": [
{
"name": "Foo bar",
"id": "123456",
"administrator": false
},
...
],
"paging": {
"cursors": {
"before": "QVFIUkwzT3FKY0JSS2hENU1NUlZAocm9GelJMcUE3S1cxWWZAPYWx1cUQxcXFHQUNGLUJnWnZAHa0tIdmpMT0U5ZAjRBLUY5Q2ZAGbmwwVTNoSHhLc1BCc2dvVTF3",
"after": "QVFIUkFoU3lYR2tXc09adkg5OGhlbHRWRk1GYkZAzQU1DalRSY05zOVl5aE1tcjRMS3lXLURaVWNMOGZArWTVxS2hPQUVGVWxhbXZAyZA0p3azVKM2hBSEp3YlpR"
}
},
"next": "https://graph.facebook.com/v2.11/123928391023981/members?access_token=EAACEdEose0cBALBDrdgLyVOjzW4mz6G3d3Yj1fTGYqygVgYq0JCDZAi0zYsY90pSSQ9hQZCn3TdwfXIAiyoXH5oUYcA4hOcCI9jztkkUhbBv9tEQ3ZBEEuHpmkm3kmgvk1HNq5mo6BM0hz8XkOLVh3twIdz83KhB9SkqxuxHeFD9GWsQqjys6XTuL2315QZD&pretty=0&limit= 1500&after=QVFIUkFoU3lYR2tXc08adkg5OGhlbHRWYk1GYkZAzQU1DalRSY05zOVl5aQ1tcjRMS3lXLURaVWNMOGZArWTVxS2hPQUVGVWxhbXZAyZA0p3azVKM1hBSEp3YlpR"
}
然后按照这个算法:
0
值创建一个count
变量数据
数组中的对象进行计数,并将计数添加到计数
变量中next
属性,则对作为next
属性值的URL发出请求并返回步骤2。否则,您已经完成,成员计数是count
变量值李>
这种方式不是很好,因为组中的成员越多,需要的查询就越多。我最好从组页面HTML解析成员的数量,但我找不到可靠的方法
更新2017.10.19:如果Facebook API响应大小超过约345KB,Facebook将返回一个错误:请减少您请求的数据量,然后重试您的请求
。大约有1997名成员。因此,您需要将limit
请求参数设置为1500,以避免出现错误
更新2018.01.26:有一种方法可以使用单个请求获取成员计数:
更新2018.01.31:发布Graph API v2.12 90天后,请求将需要一个组管理员的访问令牌。来源:您可以使用summary参数,该参数将返回总计计数值
/v2.11/{GROUP_ID}?fields=members.limit(0)。summary(true)
它在搜索组时也起作用:
/v2.11/search?q=stackoverflow&type=group&fields=id、name、members.limit(0)。summary(true)
是的,但我不需要每一个成员,我只需要数一数他们,我也需要,这是我得到的同一个答案。组成员链接断了这是一个真正的API黑帮的东西。非常感谢。您还可以向
/v2.11/{GROUP_ID}/members?limit=0&summary=true
发出请求,并从(响应数据)中获取计数。summary.total_count
发布Graph API v2.12 90天后,所有上述请求都需要组管理员的访问令牌:
{
"data": [
{
"id": "667082816766625",
"name": "Web Development Insiders",
"members": {
"data": [
],
"summary": {
"total_count": 2087
}
}
},
{
"id": "319262381492750",
"name": "WEB Developers India",
"members": {
"data": [
],
"summary": {
"total_count": 10240
}
}
}...
]
}