Аутентификация

Узнайте о дополнительных настройках из наших инструкций.

Как настроить OAuth 2.0 аутентификацию

Протокол OAuth 2.0 использует короткоживущие токены с долговременной авторизацией (refresh-токены) вместо долгоживущих токенов. Refresh-токен позволяет длительное время использовать ваше приложение без необходимости повторного ввода имени пользователя и пароля. При этом исключается вероятность того, что данные авторизации пользователя будут скомпрометированы.

Протокол OAuth 2.0 используется для авторизации:

  • через имя пользователя или email-адрес и пароль;
  • через социальные сети;
  • через Steam.

При включении настройки регистрация и авторизация пользователя выполняются с помощью вызова методов API Register new user и JWT auth by username and password. В ассете Login & Account System для авторизации по протоколу OAuth 2.0 предусмотрены те же методы, что и для авторизации с использованием токена в формате JWT. При первой инициализации объекта на сцене движком вызывается метод Awake. Метод проверяет истечение срока действия текущего refresh-токена.

Примечание
При включении настройки процесс авторизации в вашем приложении для пользователя не меняется.

Для настройки авторизации по протоколу OAuth 2.0:

  1. Настройте авторизацию по протоколу OAuth 2.0 для варианта Авторизации в Личном кабинете.
  2. Настройте ассет для вашего проекта Unity.

Настройка авторизации по протоколу OAuth 2.0 для варианта Авторизации в Личном кабинете

  1. Перейдите к вашему проекту в Личном кабинете.
  2. Выберите пункт Авторизация в боковом меню.
  3. Нажмите Настроить в панели с вариантом авторизации.
  4. Перейдите к блоку Безопасность и выберите раздел OAuth 2.0 аутентификация.
  5. Нажмите Добавить OAuth 2.0.
  6. Укажите URI переадресации OAuth 2.0 и нажмите Подключить.
  7. Скопируйте и сохраните ID клиента.

Настройка ассета в проекте Unity

  1. Перейдите к вашему проекту Unity.
  2. В главном меню выберите пункт Window > Xsolla > Edit Settings.
  3. В панели Inspector:
    1. В поле Authorization method выберите OAuth2.0.
    2. В поле OAuth2.0 client ID укажите ID клиента, полученный при настройке авторизации по протоколу OAuth 2.0 в Личном кабинете.

Для работы с refresh-токенами в ассете Login & Account System реализованы следующие методы:

  • IsOAuthTokenRefreshInProgress — возвращает true во время процесса обновления токена.
  • ExchangeCodeToToken — обменивает код аутентификации пользователя на действительный JWT.

Для дополнительной проверки пользователя при авторизации по протоколу OAuth 2.0 в методе GetSocialNetworkAuthUrl предусмотрен аргумент oauthState. Этот аргумент используется для сдерживания возможных атак CSRF.

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

Как использовать собственную систему авторизации

Внимание

Используйте эту инструкцию для работы только со следующими ассетами:

  • Game Commerce
  • Cross-Buy

Поддержка ассета Cross-Buy будет прекращена в апреле 2022. Вы можете продолжить использовать его, но он не будет обновляться и дополняться новыми возможностями. Рекомендуется перейти на использование ассета Game Commerce. Он содержит все классы и методы, необходимые для работы с продуктами Иксоллы.

Вы можете интегрировать ассеты Game Commerce и Cross-Buy с собственной системой авторизации. В этом случае необходимо реализовать аутентификацию пользователя в вашем приложении через Pay Station access token.

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

  1. Ваш клиент отправляет на ваш сервер запрос на аутентификацию.
  2. Ваш сервер авторизует пользователя и отправляет на сервер Иксоллы запрос на получение Pay Station access token.
  3. Сервер Иксоллы возвращает Pay Station access token.
  4. Ваш сервер передает Pay Station access token клиенту.
  5. Полученный Pay Station access token используется методами SDK как авторизационный токен для открытия внутриигрового магазина, проведения платежа и управления инвентарем.

Получение Pay Station access token

Примечание
Если вы используете систему авторизации PlayFab или Firebase, реализуйте получение Pay Station access token с помощью готовых расширений Иксоллы для BaaS.

В серверной части вашего приложения реализуйте метод для получения Pay Station access token с использованием HTTP POST запроса.

API Иксоллы использует базовую HTTP-аутентификацию. Запрос должен содержать заголовок Authorization: Basic <your_authorization_basic_key>, где <your_authorization_basic_key> — пара merchant_id:api_key, закодированная по стандарту Base64. Значения параметров вы можете найти в Личном кабинете:

  • merchant_id указан в разделе Настройки проекта > Вебхуки > ID продавца.
  • api_key указан в разделе Настройки компании > Ключ API.

HTTP-запрос:

Copy
Full screen
Small screen

http

  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • javascript
POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token

Headers:
  Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json

Body:
  {
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "amount": 1,
          "sku": "SKU01"
        }
      ]
    }
  },
  "settings": {
    "currency": "USD",
    "language": "en",
    "project_id": 16184,
    "ui": {
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      },
      "desktop": {
        "virtual_item_list": {
          "button_with_price": true,
          "layout": "list"
        }
      },
      "size": "medium"
    }
  },
  "user": {
    "country": {
      "allow_modify": true,
      "value": "US"
    },
    "age": 19,
    "email": {
      "value": "john.smith@mail.com"
    },
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    }
  }
}
curl --request POST \
  --url https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token \
  --header 'authorization: Basic <your_authorization_basic_key>' \
  --header 'content-type: application/json' \
  --data '{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->append('{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}');

$request->setRequestUrl('https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>',
  'content-type' => 'application/json'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

payload = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

headers = {
    'content-type': "application/json",
    'authorization': "Basic <your_authorization_basic_key>"
    }

conn.request("POST", "/merchant/v2/merchants/{merchant_id}/token", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Basic <your_authorization_basic_key>'
request.body = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}");
Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = JSON.stringify({
  "user": {
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    },
    "age": 19, 
    "email": {
      "value": "john.smith@mail.com"
    },
    "country": {
      "value": "US",
      "allow_modify": true
    }
  },
  "settings": {
    "project_id": 16184,
    "currency": "USD",
    "language": "en",
    "ui": {
      "size": "medium",
      "desktop": {
        "virtual_item_list": {
          "layout": "list",
          "button_with_price": true
        }
      },
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      }
    }
  },
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "sku": "SKU01",
          "amount": 1
        }
      ]
    }
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);

В теле запроса на получение токена передайте следующие параметры:

ПараметрТипОписание
settings
objectОбъект, содержащий настройки проекта.
settings.project_id
integerID игры в Иксолле. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта. Обязательный.
user
objectОбъект с информацией о пользователе.
user.id
objectОбъект с данными об ID пользователя в вашей системе авторизации.
user.id.value
stringID пользователя. Обязательный.
user.email
objectОбъект с данными о email-адресе пользователя.
user.email.value
stringEmail пользователя. Должен быть валидным в соответствии с протоколом RFC 822. Обязательный.
user.name
objectОбъект с информацией о нике пользователя.Обязательный.
user.name.value
stringНик пользователя.
user.steam_id
objectОбъект с данными о Steam ID пользователя.
user.steam_id.value
stringSteam ID пользователя. Обязательный, если приложение публикуется на Steam.
user.playfab_id
objectОбъект с данными о PlayFab ID пользователя.
user.playfab_id.value
stringPlayFab ID пользователя. Обязательный, если приложение использует сервисы PlayFab для начисления товаров.

Примеры запросов и ответов приведены в справочнике API.

Примечание
В запросе используйте только параметры из списка выше. Другие параметры API метода (custom_parameters, purchase и т. д.) передавать не следует, они не предназначены для получения авторизационного токена.

Использование JWT пользователя

Чтобы использовать Pay Station access token для открытия внутриигрового магазина, проведения платежа и управления инвентарем, в методах SDK передайте его в свойства XsollaLogin.Instance.Token и XsollaStore.Instance.Token.

Примеры использования токена авторизации приведены в сценариях:

Реализуйте получение нового Pay Station access token после истечения срока действия. Рекомендуется получать новый токен в фоновом режиме, без необходимости повторного входа пользователя в приложение.

Примечание
Время жизни Pay Station access token при работе с внутриигровым магазином и инвентарем — 1 час с момента последнего обращения к API Иксоллы. Чтобы изменить время жизни Pay Station access token, обратитесь к аккаунт-менеджеру проекта.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Скрыть

Как настроить нативную аутентификацию через социальные сети

Нативная авторизация позволяет пользователям войти в ваше приложение с помощью аккаунта социальной сети, настроенного на мобильном устройстве.

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

В настоящее время для SDK реализована нативная авторизация через следующие социальные сети:

  • Google
  • Facebook
  • WeChat
  • QQ

Чтобы настроить нативную авторизацию:

  1. Создайте сборку вашего проекта Unity под Android.
  2. Настройте приложение в личном кабинете разработчика социальной сети:
    1. Для авторизации через Facebook:
      1. Зарегистрируйтесь и создайте новое приложение.
      2. Настройте страницу приложения в личном кабинете разработчика Facebook.
    2. Для авторизации через Google настройте проект в Google API Console.
    3. Для авторизации через WeChat:
      1. Зарегистрируйтесь и создайте новое мобильное приложение.
      2. Отправьте приложение на проверку.
    4. Для авторизации через QQ:
      1. Зарегистрируйтесь и создайте новое мобильное приложение.
      2. Отправьте приложение на проверку.

  1. Настройте авторизацию через социальные сети на стороне Иксоллы:
    1. Для Facebook и Google настройте социальные сети в Личном кабинете.
    2. Для WeChat и QQ обратитесь к аккаунт-менеджеру проекта.
  2. Настройте ассет для вашего проекта Unity.

Создание сборки проекта Unity под Android

  1. Перейдите к вашему проекту Unity.
  2. В главном меню выберите пункт File > Build settings.
  3. В панели Platform выберите пункт Android.
  4. Нажмите Build.
  5. Убедитесь, что сформировался хеш-ключ:
    1. В главном меню выберите пункт Window > Xsolla > Edit Settings.
    2. Убедитесь, что в поле Android debug hash key появился хеш-ключ.

Для дальнейшей настройки нативной авторизации вам понадобятся:

  • Package Name, который можно найти в панели Inspector после выбора платформы Android в File > Build settings.
  • Android class name, который можно найти в Window > Xsolla > Edit Settings > Inspector > Android class name.
  • Android debug hash key, который можно найти в Window > Xsolla > Edit Settings > Inspector > Android debug hash key.

Настройка страницы приложения в личном кабинете разработчика Facebook

  1. Перейдите к настройкам приложения в личном кабинете разработчика Facebook.
  2. Перейдите Настройки > Основное.
  3. Нажмите Добавить платформу и выберите Android.
  4. В поле Название пакета Google Play укажите Package Name из вашего проекта Unity.
  5. В поле Название класса укажите Android class name из вашего проекта Unity.
  6. В поле Ключевые хеш-адреса укажите Android debug hash key из вашего проекта Unity.
  7. Нажмите Сохранить изменения.

Для дальнейшей настройки нативной авторизации вам понадобятся Идентификатор приложения и Секрет приложения, которые можно найти в настройках приложения в разделе Настройки > Основное.

Настройка проекта в Google API Console

  1. Перейдите в Google API Console.
  2. Нажмите Создать проект.
  3. Укажите Название проекта и Местоположение, нажмите Создать.
  4. Перейдите в созданный проект и в боковом меню нажмите Окно запроса доступа OAuth.
  5. Установите флажок Внешнее и нажмите Создать.
  6. Укажите необходимые параметры и нажмите Сохранить.
  7. В боковом меню выберите Учетные данные.
  8. Создайте клиент OAuth 2.0 для вашего приложения на Unity:
    1. Нажмите Создать учетные данные и выберите Идентификатор проекта OAuth.
    2. В поле Тип приложения укажите Android.
    3. Укажите Имя.
    4. В поле Название пакета укажите Package Name из вашего проекта Unity.
    5. В поле Контрольная сумма сертификата SHA-1 укажите Android debug hash key из вашего проекта Unity.
    6. Нажмите Создать.
    7. Нажмите OK.
  1. Создайте клиент OAuth 2.0 для веб-приложения:
    1. Нажмите Создать учетные данные и выберите пункт Идентификатор проекта OAuth.
    2. В поле Тип приложения укажите Веб-приложение.
    3. Укажите Имя.
    4. Нажмите Добавить URI в разделе Разрешенные URI перенаправления и укажите URI https://login.xsolla.com/api/social/oauth2/callback.
    5. Нажмите Создать.
    6. Нажмите OK.

Для дальнейшей настройки нативной авторизации вам понадобятся Идентификатор клиента и Секретный код клиента, которые можно найти в настройках идентификатора клиента для веб-приложения.

Настройка социальных сетей для варианта авторизации в Личном кабинете Xsolla

  1. Перейдите к вашему проекту в Личном кабинете.
  2. Нажмите Авторизация в боковом меню и перейдите в раздел Варианты авторизации > ваш вариант авторизации > Социальные сети.
  3. Для настройки авторизации через Facebook:
    1. Нажмите Редактировать в панели Facebook и измените статус на Отключен.
    2. В поле Application ID укажите Идентификатор приложения из личного кабинета разработчика Facebook.
    3. В поле Application Secret укажите Секрет приложения из личного кабинета разработчика Facebook.
    4. Нажмите Подключить.
  1. Для настройки авторизации через Google:
    1. Нажмите Редактировать в панели Google и измените статус на Отключен.
    2. В поле Application ID укажите Идентификатор клиента из Google API Console для веб-приложения.
    3. В поле Application Secret укажите Секретный код клиента из Google API Console для веб-приложения.
    4. Нажмите Подключить.

Настройка ассета для проекта Unity

  1. Перейдите к вашему проекту Unity.
  2. В главном меню выберите пункт Window > Xsolla > Edit Settings.
  3. Укажите идентификатор приложения:
    1. В поле Facebook App ID укажите Идентификатор приложения из личного кабинета разработчика Facebook.
    2. В поле Google server ID укажите Идентификатор клиента из Google API Console для веб-приложения.
    3. В поле WeChat App ID укажите AppID из настроек приложения WeChat.
    4. В поле QQ App ID укажите AppID из настроек приложения QQ.
    Была ли статья полезна?
    Спасибо!
    Что может сделать страницу еще лучше? Сообщение
    Жаль, что так произошло
    Расскажите, почему статья не была полезна. Сообщение
    Спасибо за обратную связь!
    Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
    Скрыть

Как подключить нативную аутентификацию через Steam

Нативная авторизация позволяет игрокам войти в ваше приложение через установленное приложение Steam.

Чтобы настроить нативную авторизацию:

  1. Подключите автоматическую аутентификацию через Steam в Личном кабинете.
  2. Настройте ваш проект Unity.
  3. Настройте обработку событий.
  4. Проверьте авторизацию через Steam.

Настройка проекта Unity

  1. Вручную создайте файл steam_appid.txt, впишите в него ID вашего приложения в Steam и поместите его в каталог Assets вашего проекта.
Примечание
Если вы загрузили ассет из GitHub, в каталоге Assets уже создан файл steam_appid.txt Steam для демопроекта.
  1. Откройте ваш проект Unity.
  2. В главном меню выберите пункт Window > Xsolla > Edit Settings.
  3. В панели Inspector:
    1. Установите флажок Use Steam authorization.
    2. В поле Steam App ID укажите ID вашего приложения в Steam. Значение должно совпадать со значением, указанным в файле steam_appid.txt.

Настройка обработки событий

Для авторизации пользователя через Steam необходимо получить session ticket с помощью метода SteamAuth. Полученное значение необходимо передать при вызове метода RequestTokenBy. В результате вы получите токен, который можно использовать при вызове API.

Проверка авторизации через Steam

  1. Создайте сборку вашего проекта Unity для stand-alone платформы.
  2. Запустите приложение Steam и авторизуйтесь в нем.
  3. Запустите ваше приложение. Если настройка выполнена правильно, откроется всплывающее окно Steam.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Скрыть

Как настроить инвалидацию токена

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

Примечание
Вы можете настроить инвалидацию токена для авторизации с использованием токена в формате JWT. При авторизации по протоколу OAuth 2.0 инвалидация токена предусмотрена самим протоколом и ее не нужно настраивать отдельно.

При использовании SDK инвалидация существующего токена и генерация нового выполняется при вызове методов API Auth by username and password и Auth via social network, если для параметра with_logout указано значение 1.

Для включения инвалидации токена в вашем проекте Unity:

  1. В главном меню выберите пункт Window > Xsolla > Edit Settings.
  2. В панели Inspector установите флажок Enable JWT invalidation.

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

Как настроить аутентификацию в приложении через Launcher

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

Внимание
Для использования Лаунчера должен быть настроен продукт Авторизация. Использование другой системы авторизации не поддерживается.

Настройка совместной работы SDK и Launcher

  1. Настройте Лаунчер в Личном кабинете.
Примечание
В файле config.json достаточно изменить значения для следующих объектов:
  • launcher_project_id — укажите ID лаунчера, который можно найти в разделе Лаунчер > Общие настройки > Общая информация Личного кабинета;
  • login_project_id — укажите ID варианта авторизации, который можно найти в разделе Лаунчер > Общие настройки > Настройки аутентификации Личного кабинета.
  1. Кастомизируйте интерфейс лаунчера.
Внимание
При интеграции SDK с серверами Иксоллы используется Commerce API, поэтому магазин Лаунчера не поддерживается.
  1. Реализуйте в вашем приложении логику авторизации через Лаунчер.
  2. Сгенерируйте установочный файл лаунчера и архив с его сборкой.
  3. Создайте сборку приложения.
  4. Загрузите сборку приложения на сервер обновлений Иксоллы.

Реализация логики аутентификации через Launcher

Сценарий авторизации в приложении через Лаунчер:

  1. Пользователь авторизуется в Лаунчере.
  2. Пользователь устанавливает и запускает приложение.
  3. Лаунчер запускает приложение с передачей параметров пользователя через командную строку. Токен для авторизации передается в параметре xsolla-login-token.
  4. Приложение обрабатывает параметры командной строки и получает токен. Пример скрипта обработки токена приведен в демопроекте.
  5. Приложение валидирует полученный токен. Пример скрипта валидации токена приведен в демопроекте.
  6. Приложение автоматически авторизует пользователя, не отображая страницу авторизации. Пример скрипта авторизации пользователя приведен в демопроекте.

Примечание
Полученный токен используется методами SDK для открытия внутриигрового магазина, проведения платежа и других операций. Передайте токен в свойства XsollaLogin.Instance.Token и XsollaStore.Instance.Token.

Создание сборки приложения

  1. Откройте ваш проект Unity.
  2. В главном меню выберите пункт Window > Xsolla > Edit Settings. В панели Inspector:
    1. В поле Project ID укажите ID проекта, который можно найти в разделе Настройки проекта > ID проекта Личного кабинета.
    2. В поле Login ID укажите ID варианта авторизации, который можно найти в разделе Лаунчер > Общие настройки > Настройки аутентификации Личного кабинета.
  1. Запустите сцену авторизации пользователя, в которой выполняется обработка токена.
  2. В главном меню выберите пункт File > Build settings и нажмите Add Open Scenes. Убедитесь, что сцена авторизации добавлена первой в списке.
  3. Нажмите Build.
  4. Во всплывающем окне укажите путь к директории, в которую будет помещена готовая сборка.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Скрыть

Как реализовать аутентификацию пользователя по ID устройства

Авторизация по ID устройства позволяет пользователям начать работу с приложением на мобильном устройстве без ввода данных для регистрации. При первом входе в приложение по ID устройства новый аккаунт создается автоматически, при этом пользователю не требуется вводить имя пользователя, email-адрес или другие данные.

Внимание
Созданный по ID устройства аккаунт позволяет использовать приложение только на текущем мобильном устройстве. Доступ к нему будет утерян при смене Android- или iOS-устройства, а также при удалении приложения на iOS-устройстве. Чтобы сохранить прогресс в приложении и пользоваться аккаунтом на других устройствах, пользователь может обновить аккаунт, привязав социальную сеть или указав имя пользователя, email-адрес и пароль.

С помощью ID устройства вы можете реализовать авторизацию пользователя на одном или нескольких мобильных устройствах в фоновом режиме. Для этого пользователю потребуется привязать к уже существующему аккаунту ID устройства.

SDK поддерживает авторизацию по ID мобильных устройств на платформах Android и iOS.

Получение ID устройства

ID устройства генерируется платформой и доступно приложениям, установленным на мобильном устройстве. SDK получает значение ID с помощью API платформы и использует это значение для выполнения различных функций с помощью API Иксоллы.

ID iOS-устройства передается в свойстве UIDevice.identifierForVendor. Для определения ID используется стандартный метод Unity SystemInfo.deviceUniqueIdentifier.

ID Android-устройства передается в константе android.provider.Settings.Secure.ANDROID_ID. Для определения ID используется собственная логика SDK, потому что стандартный метод Unity возвращает ID Android-устройства в виде MD5 хеш-кода, который не подходит для методов API Иксоллы.

Методы SDK

В SDK реализованы методы для выполнения следующих функций:

Аутентификация

Название метода SDKОписание
AuthViaDeviceID
Аутентифицирует пользователя в приложении с помощью ID текущего устройства.

Обновление аккаунта

Название метода SDKОписание
AddUsernameEmailAuthToAccount
Добавляет к текущему аккаунту имя пользователя, email-адрес и пароль, которые можно использовать для аутентификации.
LinkSocialProvider
Привязывает к текущему аккаунту социальную сеть, которую можно использовать для аутентификации.
Внимание
С помощью перечисленных методов можно обновлять аккаунт, созданный любым доступным способом (например, с помощью социальной сети или email-адреса и пароля).

Управление устройствами

Название метода SDKОписание
GetUserDevices
Возвращает список устройств, привязанных к текущему аккаунту пользователя.
LinkDeviceToAccount
Привязывает указанное устройство к текущему аккаунту пользователя.
UnlinkDeviceFromAccount
Удаляет привязку указанного устройства к текущему аккаунту пользователя.
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Скрыть
Последнее обновление: 22 января 2024

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

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