The following documentation was deprecated. Current version is available at developers.xsolla.com

Xsolla Login

Xsolla Login — система, предназначенная для разработчиков игр и приложений. В рамках подключения к Xsolla Login создается специальное приложение, позволяющее упростить процесс регистрации новых пользователей в игре, если они уже имеют учетную запись в социальных сетях. Кроме этого, с согласия пользователей, возможно получить доступ к информации из профиля в социальной сети для более глубокой интеграции с проектом.

Подготовка к работе

Для начала работы необходимо зарегистрировать приложение, написав письмо на bizdev@xsolla.com.

В письме необходимо указать:

  • Сайт — адрес сайта игры, к которому планируется подключить Xsolla Login, например http://mysite.com.
  • Базовый домен — базовый домен сайта, например, mysite.com. Можно указать несколько доменных имен, и, если есть необходимость, использовать один projectId на разных доменах.
  • Список способов аутентификации — список возможных способов аутентификации. Доступные варианты:
    • аутентификация через логин/пароль,
    • через SMS,
    • социальные сети ((Facebook, Twitter, Steam, Twitch, VK, Naver, и т.д.),
    • i-pin (BETA),
    • многофакторная аутентификация (BETA),
    • сертификат (BETA)
    • локальные социальные сети (BETA).

Также необходимо указать список социальных сетей, через которые должна быть доступна аутентификация.

В ответном письме мы пришлем вам projectId и secretKey.

Виджет аутентификации

Рассмотренный ниже пример добавляет виджет аутентификации стандартного вида. Вы можете настроить внешний вид блоков при помощи css. Шаблон SCSS доступен для скачивания по ссылке.

По умолчанию ширина блока 400px, высота зависит от аутентификационных опций.

Example of a default design Example of a custom design Example of a custom design

Подключение виджета

Для добавления виджета аутентификации Xsolla Login в игру, выполните следующие шаги:

  1. В тег <head> добавьте подключение js-sdk.js:
<script src="https://static.xsolla.com/xsolla-login/1.1.1/xl.min.js"></script>
  1. В тег <body> добавьте код для инициализации:
<script type="text/javascript">
XL.init({
         projectId: '40db2ea4-5p47-11e6-a3ff-005056a0e04a',
         locale: 'en_US',
         onlyWidgets: true,
         redirectUrl: '<your redirect url>',
         fields: 'email'
     });
</script>
Название Тип Описание
projectId string Идентификатор приложения. Обязательный.
locale string Локаль пользователя в формате <language code>_<country code>, где:
redirectUrl string Адрес, на который следует перенаправить пользователя после аутентификации. Передается в jwt-токене.
onlyWidgets boolean Инициализировать ли Xsolla Login только для подключения виджетов. 'true' по умолчанию.
preloader string Прелоадер, который будет показан до загрузки виджета. Необходимо указать html-код элемента.
fields string Данные, которые необходимо получить от пользователя. Допустимое значение: email. Обязательный
  1. Добавьте элемент DIV, в котором будет отображаться виджет, задайте ему уникальный id, и добавьте после него код инициализации виджета.
<div id="xl_auth"></div>
<script type="text/javascript">
var element_id = 'xl_auth';
var options = {
    width: '200px',
    height: '200px'
};
XL.AuthWidget(element_id, options);
</script>
Название Тип Описание
element_id string id элемента-контейнера для блока аутентификации. Обязательный
options object Настройки блока с виджетом.
options.width string Ширина блока.
options.height string Высота блока.

Xsolla Login Server Side

Схема взаимодействия

Callback URL

URL, на который происходит перенаправление пользователя в браузере в конце процесса аутенификации.

Прохождение аутентификации. Успех

В случае успеха пользователь будет переадресован на Ваш callback URL со следующим параметром:

HTTP запрос

GET https://callBackUrl.php?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Параметр Тип Описание
token string JWT-token. Вы можете дешифровать его, используя секретный ключ.
is_linking boolean Пользователь прилинковал аккаунт.

Пример дешифрованного токена

{
  "exp": 1471071785,
  "iss": "https://login.xsolla.com",
  "iat": 1470985385,
  "id": "11111111",
  "name": "John Carter",
  "email": "john@example.com",
  "type": "social",
  "provider": "social_network",
  "xsolla_login_access_key": "s4dGNSPKinUxkSRI8rhPhZRElHj2yusqEeqgLIgn"
}
Параметр Тип Описание
exp string Дата окончания действия токена. (Unix time)
iss string Указание, кто выдал JWT-token.
iat string Дата создания. (Unix time)
id string Идентификатор пользователя.
name string Полное имя пользователя.
email string email пользователя.
type string Тип аутентификации. Допустимые значения: "proxy" — проксированная аутентификация; "social" — вход через социальную сеть.
provider string Название социальной сети. Список допустимых значений: "vk", "facebook", "twitter", "steam", "baidu", "naver", "qq", "github", "microsoft", "linkedin", "google".
xsolla_login_access_key string Ключ доступа для вызова методов от имени пользователя.

Прохождение аутентификации. Ошибка

В случае ошибки, пользователь будет перенаправлен на Ваш callback URL со следующими параметрами:

HTTP запрос

GET https://callBackUrl.php?error=003-002&error_description=User+not+found&redirect_url=https://site.com/fail_url

Параметр Тип Описание
error string Группа кодов ошибок.
error_description string Описание ошибки.
redirect_url string Callback URL проекта.

Дополнительные методы API

Проксированная аутентификация может быть использована в том случае, если у Вас уже есть база пользователей. В этом случае необходимо реализовать следующие методы:

Xsolla Login будет вызывать методы с адресов https://login.xsolla.com/ и https://test-login.xsolla.com/

Проверка логина/пароля

  • Тип: POST
  • Content-type: application/json
  • Тело запроса: {"username":"ХХХХ", "password":"ХХХХ"}
  • Успех: {Ok 200}
  • Неудачный запрос: {"error": {"code": “003-001”, "description": "" }}

Регистрация

  • Тип: POST
  • Content-type: application/json
  • Тело запроса: {"username":"ХХХХ", "password":"ХХХХ", "email":"ХХХХ"}
  • Успех: {Ok 200}
  • Неудачный запрос: {error: {code: “003-003|004”, description: “” }}

Сброс пароля

  • Тип: POST
  • Content-type: application/json
  • Тело запроса: {"email":"ХХХХ"}
  • Успех: {Ok 200}
  • Неудачный запрос: {"error": {"code": “003-002”, "description": ""}}