Facebook API:如何获取组成员数

Facebook API:如何获取组成员数,facebook,facebook-fql,Facebook,Facebook Fql,我正在使用PHP客户端和FQL开发fb应用程序。看起来fb api不支持这个。使用FQL最多可以随机获得500个成员。但当团队成员超过500人时,就无法获得成员总数。 我只需要号码,不关心会员详情 有人能帮我吗 我实际上发现你不能,这显然是故意的。大约一个月前,我自己就想知道这一点,发现无论传递给graph api的参数是什么,都无法通过第500个成员。即使你让它从450开始,给你200,它也只能给你450-500 这是我的问题,不幸的答案是: 您应该使用组成员表上的FQL查询执行此操作,如:

我正在使用PHP客户端和FQL开发fb应用程序。看起来fb api不支持这个。使用FQL最多可以随机获得500个成员。但当团队成员超过500人时,就无法获得成员总数。 我只需要号码,不关心会员详情


有人能帮我吗

我实际上发现你不能,这显然是故意的。大约一个月前,我自己就想知道这一点,发现无论传递给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
                    }
                }
            }...
        ]
    }