Аутентификация пользователей в игре
Как это работает
Данные пользователей, прошедших аутентификацию в настольном приложении, передаются игре в параметре –xsolla-login-token
в формате JWT. Вы можете использовать параметр для настройки автоматической аутентификации пользователей в игре.
Основные поля JWT
Авторизационный токен будет содержать основные поля после аутентификации или подтверждения адреса электронной почты. Наличие этих полей не зависит от базы данных пользователя и типа аутентификации.
Поле | Тип | Обязательное поле | Описание |
---|---|---|---|
exp | Unix Timestamp | Да | Дата и время истечения токена. Время истечения по умолчанию составляет 24 часа. Вы можете изменить время истечения для каждого варианта авторизации. |
iss | string | Да | Сервис, который подписал токен: https://login.xsolla.com . |
iat | Unix Timestamp | Да | Дата и время выдачи токена. |
sub | string (UUID) | Да | ID пользователя, записанный на стороне сервера Xsolla Login. |
groups | array | Да | Список групп, в которых состоит пользователь. Каждая группа дана в следующем формате:
|
xsolla_login_project_id | string (UUID) | Да | ID проекта Авторизации. |
username | string | Имя пользователя. | |
publisher_id | integer | ID проекта, в котором создан вариант авторизации. | |
email | string | Email-адрес пользователя. | |
payload | string | Дополнительная информация. | |
promo_email_agreement | boolean | Согласие на рассылку. Может иметь следующие значения:
true .Чтобы добавить эту опцию в регистрационную форму виджета:
| |
connection_information | string | Показывает, подтверждена ли дата рождения с помощью сервиса okname. |
Аутентификация через социальные сети
Токен будет содержать основные поля после аутентификации или подтверждения адреса электронной почты. Наличие этих полей не зависит от базы данных пользователя и вызова аутентификации.
Поле | Тип | Обязательное поле | Описание |
---|---|---|---|
provider | string | Да | Название социальной сети. Возможные значения: amazon , apple , baidu , battlenet , discord , facebook , github , google , kakao , linkedin , mailru , microsoft , msn , naver , ok , paypal , psn , qq , reddit , steam , twitch , twitter , vimeo , vk , wechat , weibo , yahoo , yandex , youtube , xbox . |
id | string | Да | ID пользователя в социальной сети. |
is_cross_auth | boolean | Показывает, используется ли автоматическая аутентификация. | |
social_access_token | string | Параметр access_token социальной сети, который используется для аутентификации. Обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com для настройки. | |
picture | string (URL) | Ссылка на изображение профиля пользователя в социальной сети. | |
birthday | date (RFC 3339) | Дата рождения пользователя, указанная в социальной сети. | |
gender | string | Пол пользователя в социальной сети. | |
name | string | Никнейм пользователя в социальной сети. |
Сценарий пользователя
- Пользователь авторизуется в лаунчере.
- Лаунчер получает авторизационный токен с информацией о пользователе с сервера Xsolla Login.
- Пользователь запускает игру из лаунчера.
- При запуске игры лаунчер передает клиенту игры следующие аргументы:
--xsolla-login-token <token>
— авторизационный токен, полученный с сервера Xsolla Login;--xsolla-locale <locale>
— язык интерфейса.
Пример:
game.exe --xsolla-login-token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6InAudHVnb2x1a292QHhzb2xsYS5jb20iLCJleHAiOjE1ODU1MDYxMTMsImdyb3VwcyI6W10sImlhdCI6MTU4NDY0MjExMywiaXNzIjoiaHR0cHM6Ly9sb2dpbi54c29sbGEuY29tIiwicGFydG5lcl9kYXRhIjp7ImFkbWluIjp0cnVlfSwicGF5bG9hZCI6IiIsInByb21vX2VtYWlsX2FncmVlbWVudCI6dHJ1ZSwicHJvdmlkZXIiOiJ4c29sbGEiLCJyZWRpcmVjdF91cmwiOiIiLCJzdWIiOiIyNmYxNzI5Ni00Nzk5LTExZTgtOTBkMC00MjAxMGE4YTAwMTkiLCJ0eXBlIjoic29jaWFsIiwidXNlcm5hbWUiOiJzb21lX3VzZXJAbWFpbC5jb20iLCJ4c29sbGFfbG9naW5fYWNjZXNzX2tleSI6Ikk2QTJrTEZPQ2JkcnUzamIxMjNyT3JmWnNkTnFpdVcxMjNpWTdKcW85OHI5b0hPbyIsInhzb2xsYV9sb2dpbl9wcm9qZWN0X2lkIjoiNDBkYjJlYTQtNWQ0Mi0xMWU2LWEzZmYtMDA1NDU2YTBlMTRhIn0.ZsTNiwY2iPp7HKqHs5g6JXzL2kv_RVuMNBlF-Tn2ccE --xsolla-locale en
- Клиент игры передает полученный токен пользователя на сервер игры для получения данных пользователя одним из следующих способов:
Как настроить
- Реализуйте получение данных пользователя:
- Настройте обработку полученных параметров для автоматической аутентификации пользователей в игре.
- Реализуйте выбор языка интерфейса на основе языка, полученного в аргументе
--xsolla-locale <locale>
на клиенте игры. - Реализуйте отслеживание новых пользователей и создание их аккаунтов на сервере игры.
Расшифровка JWT на сервере игры
- Откройте проект в Личном кабинете и перейдите в раздел Login.
- В панели нужного варианта авторизации нажмите Настроить.
- Перейдите к блоку Безопасность и выберите раздел Подпись JWT.
- Скопируйте значение секретного ключа из поля Секретный ключ.
- Выберите библиотеку и подключите ее на серверной стороне вашего приложения.
- Передайте секретный ключ, скопированный на шаге 4, в функцию расшифровки JWT.
Получение данных пользователя с помощью Login API
Воспользуйтесь методом Get user details Login API для получения данных пользователя.
Регистрация пользователя
Чтобы отслеживать регистрацию новых пользователей:
- Откройте проект в Личном кабинете.В боковом меню перейдите в раздел Login.
- В панели нужного варианта авторизации нажмите Настроить.
- В верхнем блоке настроек на странице навигации нажмите Настройки Callback URL.
- В поле Callback URL введите адрес, на который необходимо переадресовать пользователя после регистрации.
- Настройте создание нового аккаунта в игре. После регистрации пользователь будет переадресован на URL-адрес, указанный в поле Callback URL, с параметром
is_new=1
. - Чтобы получить информацию для заполнения аккаунта, воспользуйтесь методом Login API.
Пример:
https://<callbackUrl>?is_new=1&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWR
Язык интерфейса
Example | Value | Meaning |
---|---|---|
–xsolla-locale en | “en”“ru”“cn”“tw”“fr”“de”“it”“pt”“es”“pl”“cs”“ko”“ar”“bg”“he”“ja”“tr”“th”“vi”“ro” | “English”“Русский”“简体中文”“中国传统的”“Français”“Deutsch”“Italiano”“Português”“Español”“Polski”“Čeština”“한국어”“العربية”“Български”“עברית”“日本語”“Türkçe”“ไทย”“Tiếng Việt”“Română” |
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.