Facebook API: как подсчитать количество участников группы - PullRequest
3 голосов
/ 05 января 2011

Я работаю над приложением fb, используя PHP-клиент и FQL. Похоже, что fb api этого не поддерживает. Вы можете получить до 500 случайных членов с FQL. Но когда в группе более 500 членов, нет никакого способа, как получить общее количество участников. Мне нужен только номер, не заботьтесь о деталях участника.

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 5 ]

3 голосов
/ 07 августа 2014

вы можете использовать график 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;

        }
3 голосов
/ 05 января 2011

Я на самом деле обнаружил, что вы не можете, это очевидно, по замыслу.Я хотел знать это сам около месяца назад, и обнаружил, что независимо от того, какие параметры вы передаете в графе API, вы не можете пройти 500-й член.Даже если вы скажете ему начать с номера 450 и дать вам 200, это даст вам только 450-500.

Вот я вас спрашиваю и неудачный ответ:

http://forum.developers.facebook.net/viewtopic.php?id=82134

1 голос
/ 13 декабря 2017

Вы можете использовать сводный параметр, который будет возвращать значение total_count.

/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)

{
    "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
                }
            }
        }...
    ]
}
1 голос
/ 27 сентября 2017

Сделайте запрос:

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"
}

Затем выполните этот алгоритм:

  1. Создайте переменную count со значением 0.
  2. Подсчитайте объекты в data массив последнего ответа и добавьте счетчик к переменной count.
  3. Если последний ответ имеет свойство next, сделайте запрос к URL-адресу, который является значением свойства next, и возвратитек шагу 2. В противном случае вы закончили, число членов является значением переменной count.

Этот способ не очень хорош, потому что чем больше участников в группе, тем больше запросов.Было бы лучше разобрать количество участников на странице группы HTML, но я не могу найти надежный способ сделать это.

Обновление 2017.10.19: Если размер ответа Facebook APIболее 345 КБ, Facebook возвращает ошибку: Please reduce the amount of data you're asking for, then retry your request.Это около 1997 членов.Таким образом, вам необходимо установить параметр запроса limit равным 1500, чтобы не сталкиваться с ошибкой.

Обновление 2018.01.26: Существует способ получить количество членов, используя один запрос: https://stackoverflow.com/a/47783306/1118709

Обновление 2018.01.31: Через 90 дней после выпуска Graph API v2.12 для запроса потребуется маркер доступа администратора группы.Источник: График API docs / v2.12 changelog / 90-дневные критические изменения

0 голосов
/ 04 декабря 2011

Вы должны сделать это с помощью запроса FQL к таблице group_member, например:

SELECT uid FROM group_member WHERE gid = <group_id> limit 500 offset 500

Пример здесь: Возможно ли / как получить количество конкретных членов группы Facebook (даже если числоиз них 500+)?

...