Битрикс24 помогает бизнесу работать!

+7 (495) 133-94-53

corp@get-code.ru

Статьи для АйТи

27.03.2022

Интеграция 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

Перейдя по адресу мы можем увидеть полную документацию по взаимодействию и в рамках данной статьи разберем только получения токена для авторизации и начнем по пунктам:

  1. 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=&lt;Токен аутентификации>&expires_in=<Время истечения действия токена>&user_id=<Идентификатор пользователя>&state=<Секретный код>”


Из этой информации мы получаем токена который мы будем использовать в течении указанного времени который мы сохраним в рамках страницы и получаем доступ к методам VK.API - при запросе методов указываем токен.


Спасибо за внимание и прочтение. Статью подготовил: Генеральный директор ООО ГЕТКОД - Кокуркин Герман Сергеевич




Возврат к списку

Auto Web Pinger Анализ сайта Статьи для АйТи | Технологии Битрикс24 и Геткод - максимум успеха для вашей компании! CRM & CMS под ключ
Яндекс ИКС Анализ сайта get-code.ru Статьи для АйТи | Технологии Битрикс24 и Геткод - максимум успеха для вашей компании! CRM & CMS под ключ