Top.Mail.Ru
Обмен токена на информацию о пользователе | VK ID - сервис авторизации
VK ID auth service logo

Обмен токена на информацию о пользователе

Данные о пользователе можно получить с помощью Access token или ID token. Токены содержат в себе данные, которые вы запросили и пользователь выдал вашему приложению. Есть два вида доступов:
  • Базовые — фамилия и имя, фото профиля, пол и дата рождения, а также почта по запросу.
  • Расширенные — номер телефона.
Работать с базовыми доступами можно сразу после создания приложения в сервисе авторизации VK ID. Чтобы работать с расширенными доступами, подтвердите профиль бизнеса. Если бизнес-профиль уже подтверждён, расширенные доступы будут включены автоматически. Помимо указанных доступов, есть другие расширенные, такие как список друзей, видеозаписи, фотографии и другие. Они выдаются в исключительных случаях — для их получения напишите на почту devsupport@corp.vk.com.

Получение данных с помощью Access token

Сам Access token приходит вместе с Refresh token и ID token в результате обмена на код подтверждения, который возвращается после авторизации пользователя в URL перенаправления или в callback. Такой код можно получить только с фронтенда приложения — требуется подтверждение пользователя, что он разрешает приложению обращаться к API от своего имени. Есть два способа получения Access token по Authorization Code Flow:
  • (рекомендуемый) когда обмен авторизационного кода на токены происходит с бэкенда приложения. Это более безопасный способ, так как полученный Refresh token будет храниться не в открытом виде, а на бэкенде. Поэтому злоумышленнику сложнее добраться до него;
  • когда обмен авторизационного кода на токены происходит с фронтенда приложения. Этот способ возможен для случая, когда у вашего приложения нет бэкенда. Обязательно используйте расширение PKCE для защиты передаваемых данных.
Чтобы обменять авторизационный код на токены, воспользуйтесь методом SDK VKID.Auth.exchangeCode(code, device_id), передав туда code и device_id, которые получены после авторизации. Когда у вас будет Access token, для получения информации о пользователе воспользуйтесь:
  • методом SDK VKID.Auth.userInfo(access_token). Этот метод возвращает те данные, которые вы указали при настройке доступов приложения, а также запросили в коде при настройке авторизации в параметре scope. Так, для получения немаскированного номера телефона и почты включите эти доступы в сервисе авторизации VK ID и пропишите в коде приложения scope=phone email;
  • методом API VK ID id.vk.ru/oauth2/user_info. Этот метод возвращает те же данные, что и метод SDK выше;
  • методом API ВКонтакте users.get(). Метод возвращает информацию со страницы пользователя — обратите внимание, что эта информация заполняется пользователем вручную и никак не проверяется с нашей стороны.
При получении ошибки доступа обновите Access token с помощью Refresh token.

Получение данных с помощью ID token

ID token приходит вместе с Access token и Refresh token после обмена авторизационного кода. С помощью ID token можно получить следующие данные пользователя: первую букву фамилии, имя, идентификатор пользователя, фото, маскированные номер телефона и почту. Для этого вызовите: