Авторизация / Отложенная регистрация в браузерных играх
 На главную

Авторизация

  • Руководство по интеграции

  • Возможности

  • Инструкции

  • Расширения

  • Справочники

  • Отложенная регистрация в браузерных играх

    Как это работает

    Пользователь может начать игру в браузере без регистрации. Через определенное время пользователю предлагается зарегистрироваться с сохранением прогресса в игре. Время ожидания регистрации необходимо реализовать на стороне игры.

    Сценарий взаимодействия пользователя и игры:

    1. Неавторизованный пользователь начинает игру.
    2. Игра соотносит пользователя с информацией о сессии.
    3. Через определенное время игра предлагает пользователю зарегистрироваться для продолжения.
    4. Игра отправляет запрос на регистрацию с переданной информацией о сессии на сервер Авторизации Иксолла.
    5. Сервер Авторизации Иксолла регистрирует пользователя. В результате регистрации в JWT пользователя передается информация о сессии.
    6. Игра переносит прогресс в игре к зарегистрированному пользователю.
    7. Пользователь продолжает играть как авторизованный.

    Note
    В качестве информации о сессии пользователя передается идентификатор сессии или JSON-строка с информацией о прогрессе пользователя.

    Для кого подходит

    Для партнеров, у которых уже подключен продукт Авторизация и есть браузерная игра.

    Как настроить

    Чтобы сохранить прогресс пользователя после регистрации в игре:

    1. Передайте информацию о сессии пользователя.
    2. Перенесите игровой прогресс пользователю.

    Передача информации о сессии пользователя

    Передача информации о сессии пользователя зависит от способа интеграции продукта Авторизация:

    Интеграция через Login API

    Передайте в запрос Register new user параметр payload. В качестве значения этого параметра укажите информацию о сессии пользователя.

    Пример запроса (идентификатор сессии пользователя):

    Copy
    Full screen
    Small screen
    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-строка с информацией о прогрессе пользователя):

    Copy
    Full screen
    Small screen
    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. В качестве значения этого параметра укажите информацию о сессии пользователя.

    Пример кода инициализации виджета (идентификатор сессии пользователя):

    Copy
    Full screen
    Small screen
    <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-строка с информацией о прогрессе пользователя):

    Copy
    Full screen
    Small screen
    <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 пользователя передается информация о сессии пользователя. Используйте эту информацию, чтобы перенести прогресс, полученный в ходе сессии. Идентификатор зарегистрированного пользователя можно найти в поле sub JWT пользователя.

    Пример payload JWT (идентификатор сессии пользователя):

    Copy
    Full screen
    Small screen
    {
      "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"
    }

    Пример payload JWT (JSON-строка с информацией о прогрессе пользователя):

    Copy
    Full screen
    Small screen
    {
      "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"
    }

    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Оценить страницу
    Оценить страницу
    Что может сделать страницу еще лучше?

    В другой раз

    Спасибо за обратную связь!
    Последнее обновление: 12 апреля 2021

    Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.

    Сообщите о проблеме
    Мы постоянно улучшаем качество нашей документации. Ваш отзыв поможет нам в этом.
    Укажите email-адрес, чтобы мы могли связаться с вами
    Спасибо за обратную связь!