Отложенная регистрация в браузерных играх
Как это работает
Пользователь может начать игру в браузере без регистрации. Через определенное время пользователю предлагается зарегистрироваться с сохранением прогресса в игре. Время ожидания регистрации необходимо реализовать на стороне игры.
Сценарий взаимодействия пользователя и игры:
- Неавторизованный пользователь начинает игру.
- Игра соотносит пользователя с информацией о сессии.
- Через определенное время игра предлагает пользователю зарегистрироваться для продолжения.
- Игра отправляет запрос на регистрацию с переданной информацией о сессии на сервер Xsolla Login.
- Сервер Xsolla Login регистрирует пользователя. В результате регистрации в JWT пользователя передается информация о сессии.
- Игра переносит прогресс в игре к зарегистрированному пользователю.
- Пользователь продолжает играть как авторизованный.
Для кого подходит
Для партнеров, у которых уже подключен продукт Login и есть браузерная игра.
Как настроить
Чтобы сохранить прогресс пользователя после регистрации в игре:
Передача информации о сессии пользователя
Передача информации о сессии пользователя зависит от способа интеграции продукта Login:Интеграция через Login API
Передайте в запрос payload
. В качестве значения этого параметра укажите информацию о сессии пользователя.
Пример запроса (ID сессии пользователя):
http
- http
- curl
POST https://login.xsolla.com/api/user?login_url=https://example.com&projectId=00000000-0000-0000-0000-000000000000&payload=my_session_123 HTTP/1.1
Content-Type: application/json
{
"username": "John Smith",
"password": "123456",
"email": "john-email@email.com"
}
curl --request POST \
--url 'https://login.xsolla.com/api/user?login_url=https%3A%2F%2Fexample.com&projectId=00000000-0000-0000-0000-000000000000&payload=my_session_123' \
--header 'content-type: application/json' \
--data '{"username":"John Smith","password":"123456","email":"john-email@email.com"}'
Пример запроса (JSON-строка с информацией о прогрессе пользователя):
http
- http
- curl
POST https://login.xsolla.com/api/user?login_url=https://example.com&projectId=00000000-0000-0000-0000-000000000000&payload={"coins":120,"lvl":2} HTTP/1.1
Content-Type: application/json
{
"username": "John Smith",
"password": "123456",
"email": "john-email@email.com"
}
curl --request POST \
--url 'https://login.xsolla.com/api/user?login_url=https%3A%2F%2Fexample.com&projectId=00000000-0000-0000-0000-000000000000&payload=%7B%22coins%22%3A120%2C%22lvl%22%3A2%7D' \
--header 'content-type: application/json' \
--data '{"username":"John Smith","password":"123456","email":"john-email@email.com"}'
Интеграция через виджет авторизации
Добавьте в код инициализации виджета параметр payload
. В качестве значения этого параметра укажите информацию о сессии пользователя.
Пример кода инициализации виджета (ID сессии пользователя):
- html
<script>
const xl = new XsollaLogin.Widget({
projectId: '00000000-0000-0000-0000-000000000000',
preferredLocale: 'en_US',
callbackUrl: 'https://example.com',
payload: 'my_session_123'
});
</script>
Пример кода инициализации виджета (JSON-строка с информацией о прогрессе пользователя):
- html
<script>
const xl = new XsollaLogin.Widget({
projectId: '00000000-0000-0000-0000-000000000000',
preferredLocale: 'en_US',
callbackUrl: 'https://example.com',
payload: '{"coins":120,"lvl":2}'
});
</script>
Перенос игрового прогресса пользователю
После регистрации в поле payload
JWT пользователя передается информация о сессии пользователя. Используйте эту информацию, чтобы перенести прогресс, полученный в ходе сессии. ID зарегистрированного пользователя можно найти в поле sub
JWT пользователя.
Пример
- json
{
"email": "john-email@email.com",
"exp": 1597904900,
"iat": 1597818500,
"is_master": true,
"iss": "https://login.xsolla.com",
"payload": "my_session_123",
"promo_email_agreement": true,
"publisher_id": 0,
"sub": "00000000-0000-0000-0000-000000000000",
"type": "xsolla_login",
"username": "John Smith",
"xsolla_login_access_key": "422nH1zNMIVKCesi7r4YdQXQY-jgbf2CIcvGdCREDIA",
"xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}
Пример
- json
{
"email": "john-email@email.com",
"exp": 1597904900,
"iat": 1597818500,
"is_master": true,
"iss": "https://login.xsolla.com",
"payload": "{\"coins\":120,\"lvl\":2}",
"promo_email_agreement": true,
"publisher_id": 0,
"sub": "00000000-0000-0000-0000-000000000000",
"type": "xsolla_login",
"username": "John Smith",
"xsolla_login_access_key": "422nH1zNMIVKCesi7r4YdQXQY-jgbf2CIcvGdCREDIA",
"xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.