WebWost WebWostbeta

Отслеживание количества подписчиков в сообществе ВК

Описание способа отслеживания всех вступлений и выходов из сообщества

Al-Sher

Сегодня я наткнулся на API для работы с сообществом и меня это заинтересовало: Ведь некоторым пользователям было бы интересно узнавать и вести какую-то публичную статистику о кол-ве подписчиков в их сообществе. А так же меня заинтересовало то, какие методы будут доступны с access_token сообществом, но они меня, к сожалению, не сильно обрадовали...

Давайте подумаем над реализацией функционала записи юзеров сообщества в нашу БД. Конечно можно вызывать "публичный" методgroups.getById, который позволяет получатьmembers_count, каждый день, но, если стараться делать информацию актуальной, данный способ не совсем "хороший". К счастью ВКонтакте реализовалиCallback API для сообществ, позволяющий уведомлять ваш сервер о следующих событиях:

И многие другие, описывать их всех я не вижу смысла, так как для нас важны лишь следующие два события:Вступление в сообщество иВыход из сообщества.

Callback API позволит отправлять вашему серверу запрос при необходимых действиях, поэтому нам не обязательно постоянно стучаться в API и сравнивать количества пользователей.

Давайте зайдем в настройки API нашего сообщества и перейдем во вкладку "Работа с API" и выберем "Callback API".

Тут нас просят ввести адрес сервера, то есть страницы, куда будут идти запросы. Нам необходимо сначала вывести строку, которая описана в "Строка, которую должен вернуть сервер:". Заходим через FTP на наш сайт, заходим в нужный файл и вводим эту строчку. Далее нажимаем "Подтвердить" и если всё пройдет успешно, то выйдет уведомление "Адрес сервера успешно сохранён" и значит мы можем продолжать работу.

Давайте посмотрим что присылает нам ВК. Для этого пишем следующий код в наш файл:

if(isset($_REQUEST)) { 
    $data = file_get_contents('php://input');
    $f=fopen(__DIR__.'/vk.txt','a+'); // Открываем файл для записи
    fwrite($f,$data); // Записываем ответ сервера
    fclose($f); // Закрываем файл
    echo 'ok'; // Сообщаем серверу, что всё в порядке
} 

Этот код запишет в файл vk.txt данные, отправленные сервером ВК. Давайте теперь выйдем и зайдем в наше сообщество и посмотрим ответ. В нашем файле, после проделанных действий, должно быть записано нечто такое:

{"type":"group_leave","object":{"user_id":1,"self":1},"group_id":67079968} {"type":"group_join","object":{"user_id":341874657,"join_type":"join"},"group_id":67079968}

Ну вот мы и узнали, что нам отправляет сервер, осталось лишь разобрать запрос и реализовать запись. О том, как записывать в БД, я описывать в этой статье не буду, но вот разбор запроса опишу.

Для начала, для большей безопасности, было бы хорошо записать секретный ключ, который ВК будет отправлять нам. Для этого в настройках Callback API записываем его и сохраняем.

Всё, теперь можно и начать разбор ответов ВК. Вот небольшой набросок кода, который будет осуществлять проверку на вход и выход пользователя:

if(isset($_REQUEST)) { 
    $data = json_decode(file_get_contents('php://input'));
    if($data->secret=='Секретный_ключ') {
        if($data->type=='group_join') {
            // Добавляем юзера в БД
            // Получить id юзера можно с помощью $data->object->user_id
        } else {
            // Удаляем юзера по id
            // Получить id юзера можно с помощью $data->object->user_id
        }
    } else exit('');
}

На этом я хочу закончить данную статью :)

0 комментариев

Новый комментарий