Интеграция VK.API SDK - Авторизация OAuth 2.0
В этой статье мы разберем взаимодействие с VK.API и устройство интеграции.
Как все мы знаем что у VK (ВКонтакте) есть возможность создание публичных страниц для бизнеса и взаимодействие с пользователями непосредственно в чате и в данной статье мы разберем 2 способа интеграции с VK.
Способ Первый. Простой.
Как все мы знаем Битрикс24 имеет несколько встроенных возможностей для монетизации ВК и привлечении новых клиентов через социальную сеть.
1. Мы находимся на главной странице Битрикс24 (облако или коробка), в ленте новостей. 2. В левом меню ищем раздел “Контакт центр” и переходим в него - в итоге мы попадаем в раздел Битрикс24 отвечающий за внедрения сервисов обмена сообщениями и телефонией, в нем мы можем увидеть ряд сервисов для контроля диалогов, просмотра историй, внедрения внешних сервисов, таких как Telegram, VK - Вконтакте, OK - Одноклассники, и для подключения сервисов телефонии и настройки этих сервисов. 3. Выбираем элемент “ВКонтакте” и нажимаем “Создать новую открытую линию”.
Следующие действия:
Справа выдвигается слайдер с возможным подключение группы и выбираем “Подключить”
Выпадет следующий слайд в котором мы выбираем “Авторизоваться”
Выполнив авторизацию мы увидим вот такую страницу в котором у нас будет список групп/публичных страниц под нашим управлением, под управлением аккаунтом под которым мы произвели авторизацию и ряд настроек
Чтобы подключить нужную нам группу/публичную страницу - жмем кнопку подключить рядом с нужной нам группы
Далее производим настройку открытой линии и соответственно выбираем сотрудников кто будет участвовать в этой открытой линии в разделе “Очередь ответственных сотрудников”
Вуаля! Мы закончили настройку через типовое решение предоставленное Битрикс24
В данном решении мы использовав типовое решение в котором в выбранную группу могут писать пользователи/клиенты/потенциальные клиенты - а сообщения будут приходить в наш битрикс и на указанных “Ответственных сотрудников” будут распределяться по очереди и занятости в котором можно производить коммуникацию с теми кто обратился в сообщениях в ВК. Но как мы знаем типовой функционал не поддерживает более широкий спектр инновационных технологий который был разработан за последнее время - как например чат бот или аналогичные технологии либо непосредственное внедрение в Битрикс24 для взаимодействия с внутренними и следующий тип внедрения подходит только для коробочной версии так как интеграция происходит через VK.API SDK
Способ Второй. Сложный. VK.API SDK
Данный функционал подходит для непосредственно разработчиков и интеграторов владеющие навыками программирования и имеющие представления о том как устроены внутренности Bitrix D7
Итак, первое что нам нужно сделать - это понять как происходит взаимодействие. Опишем взаимодействие по подробней. API - это аббревиатура которая расшифровывается как Application Program Interface - то есть интерфейс для работы с программной частью автоматически, удаленно, в 75% случаев используется REST запросы и если доступ к каким то конфиденциальным данным используется OAuth 2.0 аутентификация. Разберем что же это за аутентификация такая.
OAuth 2.0 — протокол аутентификации, позволяющий выдать одному сервису (приложению) права на доступ к ресурсам пользователя на другом сервисе. Протокол избавляет от необходимости доверять приложению логин и пароль, а также позволяет выдавать ограниченный набор прав, а не все сразу.
То есть - это аутентификация по более безопасному каналу без ввода аутентификационных данных логина и пароля - как это происходит в VK и VK.API
В общем случае для идентификации в API используется специальный ключ доступа, который называется access_token.
Токен — это строка из цифр и латинских букв, которую вы передаете на сервер вместе с запросом. Из этой строки сервер получает всю нужную ему информацию. Есть разные способы получения токена, более того, он может быть выдан не только пользователю, но и сообществу, и сразу всему приложению, в итоге мы получаем что для аутентификации нам необходимо получить Токен доступа. который, кстати имеет ограниченное время работы - 86400 секунд — это ровно сутки. Через сутки полученный токен перестанет действовать, для продолжения работы нужно будет получить новый. Есть возможность получить токен без срока действия — для этого в scope добавьте значение offline. Вы можете принудительно отозвать токен (например, в том случае, если он стал известен постороннему), сбросив сеансы в настройках безопасности вашего аккаунта или сменив пароль. Также, если речь идет о токене не из вашего собственного приложения, можно просто удалить приложение из настроек: https://vk.com/settings?act=apps
Ой-ей-ей как все сложно, адреса, секунды, ключ, токен. И тут на на помощь приходят разработчики которые сделали SDK - software development kit, комплект средств разработки в котором уже есть необходимые определенные методы для взаимодействия с VK.API.
Актуальная версия - тут - https://github.com/VKCOM/vk-php-sdk
Перейдя по адресу мы можем увидеть полную документацию по взаимодействию и в рамках данной статьи разберем только получения токена для авторизации и начнем по пунктам:
-
VK.API работает через приложения - в зависимости от уровня доступа нам нужно выбрать это просто интеграция или StandAlone приложение - отличаются они уровнями доступа и из названия последнего мы понимаем что это автономное приложение которое имеет больше возможностей поэтому мы создадим на примере такое приложение.
Для это мы переходим в раздел “Для разработчиков” во ВКонтакте - он находится тут - https://dev.vk.com/
Что? Куда я попал - “Памагите” скажите вы, но тут все просто - наводим курсор на пункт “Мои приложения” и выбираете “Создать приложение” и попадаем на такую страницу
Тут нам надо - ввести название нашего приложения, выбрать платформу - Standalone-приложение. Вот что мы получаем
Далее выбираем - подключить приложение и попадаем на следующую страницу
Наше приложение создано, здесь мы можем настроить приложение как нам нужно - но главные данные в разделе настройки - перейдем туда.
Важные параметры которые необходимы нам я пометил маркером-стрелкой
ID приложения и защищенный ключ нам нужно скопировать и сохранить в безопасное место, Состояние - “Приложение включено и видно всем”, в визуальном интерфейсе мы закончили - и сохранили два параметра которые мы будем использовать в дальнейшем, качаем VK SDK PHP - устанавливаем и в необходимом нам месте - мы подключаем файл autoload.php - это файл скомпилированного пакета в котором собраны все файлы для автозагрузки чтобы отдельно не загружать каждый файл для использовании SDK - подключив нам следующим шагом нужно произвести аутентификацию для пользования сервисом. Приведу код для примера запроса Токена аутентификации
<?
require_once("<ПУТЬ ДО ФАЙЛА>/autoload.php");
— Тут мы подгружаем классы для взаимодействия с VK.API
use \VK\Client\VKApiClient,
\VK\OAuth\VKOAuth;
— Объявляем переменные для аутентификации
$vk = new VKApiClient('5.101');
$oauth = new VKOAuth();
— Объявляем системные переменные
$client_id = “Идентификатор приложения которые мы получили при создании”;
$redirect_uri = 'Адрес для получения токена';
$state = 'Секретные код для доступа к приложение (не сервисный)';
— Устанавливаем дополнительные разрешения
$revoke_auth = true;
$display = VK\OAuth\VKOAuthDisplay::PAGE;
— Определяем переменную со списком необходимых элементов к которым нам нужен доступ - в данном примере мы запрашиваем доступ к пользователю и личным данным, стене и сообщений в постах, к группам
$scope = [VK\OAuth\Scopes\VKOAuthUserScope::WALL, VK\OAuth\Scopes\VKOAuthUserScope::GROUPS];
— Генерируем ссылку к которой мы будем обращаться для получения токена
$browser_url = $oauth->getAuthorizeUrl(VK\OAuth\VKOAuthResponseType::TOKEN, $client_id, $redirect_uri, $display, $scope, $state, null, $revoke_auth);
?>
— Выводим сообщение с вопросом о переходе по ссылке при положительном ответе - перенаправляем на полученную ссылку
<script>
if(confirm("Проверить доступ к VK?")){
location.href ="<?=$browser_url?>";
}
</script>
Видим что у нас получилось
и нажимаем “Разрешить” и нас возвращает обратно с той страницы с которой мы отправляли запрос и получаем ссылку
“https://адрес_сайта/путь_до_обработчика/#access_token=<Токен аутентификации>&expires_in=<Время истечения действия токена>&user_id=<Идентификатор пользователя>&state=<Секретный код>”
Из этой информации мы получаем токена который мы будем использовать в течении указанного времени который мы сохраним в рамках страницы и получаем доступ к методам VK.API - при запросе методов указываем токен.
Спасибо за внимание и прочтение. Статью подготовил: Генеральный директор ООО ГЕТКОД - Кокуркин Герман Сергеевич