Top.Mail.Ru
Пользовательская кнопка VK ID для Flutter | VK ID - сервис авторизации
VK ID auth service logo

Пользовательская кнопка VK ID для Flutter

Пользовательская кнопка создается сервисом вручную, если стандартная кнопка One Tap или шторка авторизации не подходит вашему сервису.
Обратите внимание
Пользовательская кнопка должна соответствовать требованиям к дизайну.
Реализуйте свой UI для кнопки. В момент нажатия на кнопку вызовите метод VKID.authorize() и переходите к дальнейшим шагам. Пример кода
(await VKID.getInstance()).authorize(
    onAuth: (authData) => print(authData),
    onError: (error) => print(error)
);
После авторизации пользователя в сервисе с помощью VK ID в ответе приходит Access token с данными пользователя.
ПолеОписание
tokenAccess token пользователя
idTokenID token пользователя, который используется для получения публичных маскированных данных
userIDИдентификатор пользователя
expireTimeВремя действия токена доступа в секундах
userDataИмя, фамилия, номер телефона, фото и почта
scopesСписок доступов, разрешенных пользователем для этого токена
Также после получения Access token происходит его привязка к IP-адресу:
  • если вы используете авторизацию через SDK с обменом кода на фронтенде, Access token привязывается к IP-адресу пользователя. Этот токен можно использовать только с того клиентского устройства, на котором прошла авторизация;
  • если вы используете авторизацию через SDK с обменом кода на бэкенде, Access token привязывается к IP-адресу бэкенда сервиса. Токен можно использовать только на одном бэкенд-сервере — на том, который получил этот токен. Если передать токен на другой бэкенд-сервер или на фронтенд, возникнет ошибка.

Как получить и обработать данные

Если приложению нужно получить данные пользователя, оно сможет воспользоваться методом VKID.fetchUser(). Этот метод использует сохранённый AT и сделает запрос к /user_info. Подробнее Обратите внимание, что для доступа к телефону и почте нужно передать scopes "phone" и "email" соответственно. Это можно сделать через метод VKID.authorize(), передав в параметре params нужные доступы:
(await VKID.getInstance()).authorize(
    ...
    params: AuthParamsBuilder()
        .withScopes({ "scope_1", "scope_2"})
        .build()
    ...
)

Дальнейшие шаги