Интеграция VK ID в свой сервис: Пошаговая инструкция

В нашем случает в Autopilot AI Wiz: наш опыт.

Если вы занимаетесь разработкой, наверняка сталкивались с мемами о документациях к API и сервисам. Действительно, это смешно — сами разработчики шутят об этом и сами же их пишут. Совпадение? Не думаю.

Времена меняются, и с повсеместным использованием нейросетей интеграция сторонних API стала проще. Теперь достаточно написать в чат что-то вроде «Эй, друг, как мне запостить сообщение в Facebook через API на TypeScript?» и вуа-ля! Почти готовый ответ у вас на руках. Однако, что делать, если API постоянно обновляются? Или, что еще сложнее, если речь идет о русском сервисе? Здесь на помощь приходят форумы и соцсети, где люди делятся опытом и спасают других от подобных трудностей. Эта статья написана с той же целью.

Сегодня я расскажу, как мы в AiWiz интегрировали через наш сервис Autopilot авторизацию с помощью VK ID.

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

Как устроена аутентификация в различных сервисах для использования их API от лица пользователя?

Сначала наш сервис отправляет запрос на определенный URL, указывая аутентификационные данные и так называемый redirect_uri — адрес, на который вас перенаправят после успешной аутентификации, добавив временный токен/специальный код. Затем отправляем еще один запрос, передавая полученный код, чтобы получить access token, который нужно сохранять и использовать при каждом API запросе. Это общая схема, а конкретная реализация остается за разработчиками.

Шаги, которые мы прошли:

1. Создали приложение в VK.

 — Здесь нет смысла вдаваться в подробности, так как этот пункт хорошо и понятно описан на [официальном сайте](https://id.vk.com/about/business).

2. Запросили все необходимые разрешения.

 — Пришлось указать много персональных данных. Если вам нужно только получать данные от VK, можно их не указывать.

3. Настроили приложение:

 — Назвали наше приложение, добавили картиночку, чтобы было красиво.

 — Добавили базовый домен (ы) (обязательно укажите localhost для локального тестирования).

 — Добавили все необходимые redirect_uri для каждого домена. Обязательно укажите «http://localhost/вашредирект» и/или «https://localhost/вашредирект» для локальных тестов.

 — Важно! При локальном тестировании сервис должен слушать либо на 80, либо на 443 портах. Учтите это при настройке.

2fcd664484b85a9c82059e94b5389e8c.png

Что мы сделали со стороны нашего сервиса:

1. Добавили в переменные окружения (.env) Autopilot ID приложения и сервисный ключ.

c2ef0faa97022b0762c852566d28b2f0.png

2. Создали необходимый URL для отправки кредсов.

c275f4eed604216311a31ffe230e46c8.png

3. Реализовали окно авторизации (Это я оставлю на вашу совесть).

 — По данному URL нужно перейти. Например, window.location.assign(url). Сервер проверит кредсы и перейдет на указанный redirect_uri, передав временный токен.

4. Сохраненили временный код/токен и отправили его вместе с сервисным ключом на указанный URL.

e3758ef9f89d6a619855bd481df7c49d.png

5. Сохранили полученный токен.

 — Токен сохраняем там, где его легко получить для отправки API запросов. У нас это глобальная переменная — $. Его мы отправляем с каждым запросом к api в заголовках.

На что стоит обратить внимание:

— На ваш redirect_uri придет объект payload — это не объект, а строчка, поэтому ее нужно распарсить.

— Если вы разработчик, работающий на Ubuntu, вы можете столкнуться с проблемами при назначении портов 80 и 443. В Visual Code попытка присвоить вашему приложению эти порты вызывает ошибку, указывающую на невозможность выполнения операции. Возможно, вам повезет больше в решении этой проблемы, но лично у меня не получилось. Однако, на Mac такой проблемы не возникало.

Вот и все. Вроде бы не очень сложно? Желаю удачи в реализации авторизации в VK!   

Автор Тимофей, разработчик AI Wiz

© Habrahabr.ru