Кросс-платформенный аккаунт
Как это работает
Глоссарий
В Личном кабинете доступны следующие типы варианта авторизации:
- Стандартный — вариант авторизации, который используется для хранения единых аккаунтов.
- Теневой — вариант авторизации, который используется для хранения аккаунтов платформ и аутентификации пользователя на платформе публикации.
Единый аккаунт — аккаунт, который создается в стандартном варианте авторизации и связан с аккаунтами платформ. Единый аккаунт обеспечивает идентификацию пользователя на разных платформах публикации.
Аккаунт платформы — аккаунт пользователя, который создается в теневом варианте авторизации и связан с конкретной платформой публикации. Аккаунт платформы может быть привязан к единому аккаунту, но не к другому аккаунту платформы. Удаление привязки аккаунта платформы невозможно.
Платформа публикации — платформа, на которой распространяется игра. Например, Steam, Xbox, PlayStation.
Кросс-платформенный аккаунт — единый аккаунт, к которому привязаны один или более аккаунтов платформ.
Каждый аккаунт пользователя с играми на определенной платформе должен быть сопоставлен с аккаунтом платформы в теневом варианте авторизации. Например, у пользователя есть аккаунт с играми на Xbox и PlayStation. Тогда к теневому варианту авторизации могут быть привязаны два аккаунта платформы: аккаунт на Xbox и аккаунт на PlayStation.
Использование кросс-платформенного аккаунта
Использование кросс-платформенного аккаунта позволяет:
- играть пользователю на разных платформах под одним аккаунтом;
- получать друзей из социальной сети пользователя с платформы, где он имеет аккаунт.
Если аккаунт платформы привязан к единому аккаунту:
- Пользователь авторизуется на платформе.
- Сервер Xsolla Login выдает пользователю токен единого аккаунта.
- Сервер Xsolla Login авторизует пользователя единого аккаунта.
При использовании кросс-платформенного аккаунта ID пользователя в токене будет совпадать с ID единого аккаунта. ID пользователя можно найти в JWT > поле sub
.
Сценарий привязки аккаунтов
Если у пользователя уже есть единый аккаунт, при аутентификации на аккаунте платформы он может привязать его к единому аккаунту. Это происходит следующим образом:- Пользователь впервые входит в игру на консольной платформе.
- Интерфейс игры предлагает привязать аккаунт платформы и единый аккаунт игры пользователя.
- Пользователь переходит в приложение и авторизуется в едином аккаунте.
- Приложение отправляет запрос
Create code for linking accounts на сервер Xsolla Login. - Приложение отображает игроку код привязки.
- Пользователь возвращается к консольной платформе и вводит полученный код.
- Сервер игры отправляет запрос
Link accounts by code на сервер Xsolla Login. - На экране консольной платформы выводится сообщение об успешности привязки.
Для кого подходит
Для партнеров, у которых уже подключен продукт Login и есть аккаунт платформы публикации.
Как настроить
Для интеграции кросс-платформенного аккаунта понадобятся следующие параметры из Личного кабинета:
main_project_id
— ID стандартного варианта авторизации в UUID формате. Пример:f6c5011a-715e-4e5e-b7b1-a4812d85b8c8
.shadow_project_id
— ID варианта авторизации в UUID формате, который будет использоваться в качестве теневого. Создайте теневой вариант авторизации, указав для негоpublisher_project_id
в настройках варианта авторизации. ID созданного проекта — этоshadow_project_id
.publisher_project_id
— ID проекта. Параметр отображается в разделе Настройки проекта > Общие настройки > ID варианта авторизации.
Передайте персональному менеджеру проекта параметры shadow_project_id
и publisher_project_id
, чтобы получить параметры OAuth 2.0 клиента:
client_id
— ID OAuth 2.0 клиента;client_secret
— секретный ключ OAuth 2.0 клиента.
Чтобы интегрировать кросс-платформенный аккаунт, выполните следующие шаги:
- Реализуйте аутентификацию пользователей:
- Выполните привязку аккаунтов:
Аутентификация пользователя в едином аккаунте
Единый аккаунт создается в варианте авторизации с указаннымmain_project_id
. Для регистрации и аутентификации может использоваться как виджет авторизации, так и Аутентификация пользователя в аккаунте платформы
Для регистрации и аутентификации пользователей через платформу выберите способ и следуйте инструкции. Вы можете совмещать эти способы. Например, для платформы Xbox использовать автоматическую аутентификацию, а для другой платформы — аутентификацию черезАутентификация через custom ID
Для создания аккаунта платформы используйте на сервере игры метод
- Параметр
publisher_project_id
илиshadow_project_id
. Если в запросе отсутствуют оба параметра, сервер Xsolla Login вернет ошибку. - Серверный токен.
- Информацию об аккаунте пользователя на платформе в параметре
social_profile
.
При использовании такой аутентификации получение друзей с платформ недоступно. Список платформ, для которых аутентификация возможна, не ограничен.
Сценарий аутентификации:
- Клиент игры выполняет запрос на аутентификацию на сервер игры, когда пользователь запускает игру.
- Сервер игры генерирует или использует уже существующий
custom ID пользователя. - Сервер игры отправляет запрос
Auth by custom ID с указанием платформы и ID пользователя на этой платформе (параметрыplatform
иuser_id
соответственно) на сервер Xsolla Login. Если пользователь с переданным custom ID не найден, создается новый пользователь. - Сервер Xsolla Login возвращает токен серверу игры.
Пример запроса:
http
- http
- curl
POST https://login.xsolla.com/api/users/login/server_custom_id?publisher_project_id=<publisher_project_id> HTTP/1.1
X-Server-Authorization: <server_token>
Content-Type: application/json
{
"server_custom_id": "secret_value",
"social_profile": {
"platform": "xbox",
"user_id": "123"
}
}
curl --request POST \
--url 'https://login.xsolla.com/api/users/login/server_custom_id?publisher_project_id=publisher_project_id' \
--header 'content-type: application/json' \
--header 'x-server-authorization: server_token' \
--data '{"server_custom_id":"secret_value","social_profile":{"platform":"xbox","user_id":"123"}}'
Пример ответа:
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"token": "<platform_user_token>"
}
Автоматическая аутентификация
Чтобы настроить автоматическую аутентификацию, создайте теневой вариант авторизации и воспользуйтесь инструкцией. Для создания аккаунта платформы используйте на сервере игры методы автоматической аутентификации.Получение кода привязки
Для получения кода привязки:
- Используйте метод
Create code for linking accounts . Передайте в него пользовательский токен, полученный при авторизация в едином аккаунте. - Отобразите полученный код пользователю.
Пример запроса:
http
- http
- curl
POST https://login.xsolla.com/api/users/account/code HTTP/1.1
Authorization: Bearer <main_user_token>
curl --request POST \
--url https://login.xsolla.com/api/users/account/code \
--header 'authorization: main_user_token'
Пример ответа:
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"code": "123456"
}
Привязка аккаунтов
Для привязки аккаунта платформы к единому аккаунту используйте метод code
со значением кода привязки, введенного пользователем на консольной платформе.
Пример запроса:
http
- http
- curl
POST https://login.xsolla.com/api/users/account/link HTTP/1.1
X-Server-Authorization: <server_token>
Content-Type: application/json
{
"code": "123456",
"platform": "xbox",
"user_id": "123",
"publisher_project_id": 44056
}
curl --request POST \
--url https://login.xsolla.com/api/users/account/link \
--header 'content-type: application/json' \
--header 'x-server-authorization: server_token' \
--data '{"code":"123456","platform":"xbox","publisher_project_id":44056,"user_id":"123"}'
Пример ответа:
- http
HTTP/1.1 204 No Content
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.