В нашем случает в 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 портах. Учтите это при настройке.

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

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

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

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

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

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

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

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

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

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

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

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

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

Комментарии (3)


  1. DrewUnknown
    14.06.2024 09:39
    +1

    а какой смысл вообще работать с ВК?
    когда все прогрессивные ребята в телеграмме, signal там всякие, слаки и дискорды.


    1. Marketing_AIWize Автор
      14.06.2024 09:39

      У нас платформа в том числе и для тех, кто работает с текстами, картинками и соцсетями. И есть запросы на постинг в ВК. Поэтому мы делали интеграцию.


  1. tempick
    14.06.2024 09:39

    А можно просто открыть документацию, где всё подробно и понятно описано (причем тут мемы, хз). Или одну из миллиона подобных статей в гугле.