Собственное хранилище
При использовании собственного хранилища вам доступны:
- регистрация пользователей;
- аутентификация по имени пользователя и паролю;
- аутентификация без пароля по номеру телефона;
- аутентификация через социальные сети;
- Сброс пароля пользователя.
Сценарий взаимодействия
В качестве клиента может выступать виджет авторизации Xsolla или ваше приложение, которое использует методы Login API. Сценарий взаимодействия клиента и сервера Xsolla Login:
- Клиент отправляет запросы на сервер Xsolla Login. Формат запросов описан в группах методов JWT и Password.
- Сервер Xsolla Login отправляет запросы на ваш сервер. Для валидации запросов используйте инструкцию.
- Сервер Xsolla Login обрабатывает ответ от вашего сервера и возвращает результат клиенту.
- Клиент обрабатывает ответ.
- В виде любого объекта JSON.
- В виде массива объектов с атрибутами пользователя. Объекты должны иметь следующую структуру:
Параметр | Тип | Описание |
---|---|---|
attr_type | string | Тип атрибута, определяет уровень доступа пользователя к атрибутам сервиса:
|
key | string | Название атрибута, которое используется для идентификации атрибута пользователя. Должно быть уникальным для каждого пользователя. Максимальная длина: 256 символов. Вы можете использовать цифры, латинские буквы, подчеркивания и дефисы. |
permission | string or null | Тип доступа к атрибутам пользователя, влияет на список атрибутов, которые возвращают методы:
Возможные значения: public , private (по умолчанию). |
read_only | string | Защищен ли атрибут от изменений. По умолчанию false и изменять значения атрибута разрешено. |
value | string | Значение атрибута пользователя. Максимальная длина: 256 символов. |
Регистрация пользователя
- Клиент отправляет запрос
Register new user на сервер Xsolla Login. - Сервер Xsolla Login отправляет запрос на URL для создания пользователя. Ответ на запрос должен иметь формат, описанный в сценарии взаимодействия. В ответе вы можете указать список пользовательских атрибутов или любой необходимый объект JSON. Объект JSON, переданный вами в ответе, записывается в поле
partner_data
JWT пользователя.
http
- http
- curl
POST https://your.hostname/your_registration_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json
{
"email":"j.smith@email.com",
"password":"123456",
"username":"j.smith@email.com"
}
curl --request POST \
--url 'https://your.hostname/your_registration_uri' \
--header 'authorization: bearer_JWT' \
--header 'content-type: application/json' \
--data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
Пример ответа c атрибутами пользователей:
- json
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Пример ответа с объектом JSON:
- json
{ "region": "Asia",
"type": "new"
}
- Информация о пользователе записывается в базу данных Xsolla. При этом параметр
email
отмечается как неподтвержденный. Письмо для подтверждения регистрации отправляется пользователю. - Если вы интегрировали виджет авторизации, пользователь перенаправляется на страницу с сообщением: Письмо со ссылкой для подтверждения аккаунта отправлено на {email}.
- В случае неуспешной регистрации пользователя вы можете передать сообщение об ошибке, которое будет отображено в виджете авторизации. Для этого в ответе на запрос для создания пользователя передайте объект
error
, в котором:- В параметре
code
укажите011-002
. - В параметре
description
укажите текст ошибки.
- В параметре
- json
{
"error": {
"code": "011-002",
"description": "<string>"
}
}
Аутентификация по имени пользователя и паролю
- Клиент отправляет запрос
Auth by username and password на сервер Xsolla Login. - Сервер Xsolla Login отправляет запрос на URL-адрес для проверки существования пользователя. Ответ на запрос должен иметь формат, описанный в сценарии взаимодействия. В ответе вы можете указать список пользовательских атрибутов или любой необходимый объект JSON. Объект JSON, переданный вами в ответе, записывается в поле
partner_data
JWT пользователя.
http
- http
- curl
POST https://your.hostname/your_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json
{
"email":"j.smith@email.com",
"password":"123456",
"username":"j.smith@email.com"
}
curl --request POST \
--url 'https://your.hostname/your_authentication_uri' \
--header 'authorization: bearer_JWT' \
--header 'content-type: application/json' \
--data '{"email":"j.smith@email.com","password":"123456","username":"j.smith@email.com"}'
Пример ответа c атрибутами пользователей:
- json
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Пример ответа с объектом JSON:
- json
{ "region": "Asia",
"type": "new"
}
- Сервер Xsolla Login генерирует JWT пользователя.
- Пользователь перенаправляется на
login_url
с query-параметромtoken
. В параметрtoken
записывается JWT пользователя.
Аутентификация без пароля по номеру телефона
- Клиент открывает форму аутентификации и предлагает пользователю ввести номер телефона.
- Пользователь вводит свой номер телефона.
- Клиент отправляет запрос
Start auth by phone number на сервер Xsolla Login. - Клиент предлагает пользователю ввести код подтверждения.
- Пользователь вводит полученный код.
- Клиент отправляет запрос
Complete auth by phone number на сервер Xsolla Login. - Если это первая авторизация пользователя, сервер Xsolla Login отправляет запрос на URL для входа без пароля по номеру телефона. Ответ на запрос должен иметь формат, описанный в сценарии взаимодействия. В ответе вы можете указать список пользовательских атрибутов или любой необходимый объект JSON. Объект JSON, переданный вами в ответе, записывается в поле
partner_data
JWT пользователя.
http
- http
- curl
POST https://your.hostname/your_phone_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json
{
"login": "+12025550140",
"type": "phone"
}
curl --request POST \
--url 'https://your.hostname/your_phone_authentication_uri' \
--header 'authorization: bearer_JWT' \
--header 'content-type: application/json' \
--data '{"login":"+12025550140","type":"phone"}'
Пример ответа c атрибутами пользователей:
- json
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Пример ответа с объектом JSON:
- json
{ "region": "Asia",
"type": "new"
}
Аутентификация без пароля по email
- Клиент открывает форму аутентификации и предлагает пользователю ввести email-адрес.
- Пользователь вводит свой email-адрес.
- Клиент отправляет запрос
Start auth by email на сервер Xsolla Login. - Клиент предлагает пользователю ввести код подтверждения.
- Пользователь вводит полученный код.
- Клиент отправляет запрос
Complete auth by email на сервер Xsolla Login. - Если это первая авторизация пользователя, сервер Xsolla Login отправляет запрос на URL-адрес для входа без пароля по номеру email. Ответ на запрос должен иметь формат, описанный в сценарии взаимодействия. В ответе вы можете указать список пользовательских атрибутов или любой необходимый объект JSON. Объект JSON, переданный вами в ответе, записывается в поле
partner_data
JWT пользователя.
http
- http
- curl
POST https://your.hostname/your_email_authentication_uri HTTP/1.1
Authorization: Bearer {JWT}
Content-Type: application/json
{
"email": "user@mail.com",
"type": "email"
}
curl --request POST \
--url 'https://your.hostname/your_email_authentication_uri' \
--header 'authorization: bearer_JWT' \
--header 'content-type: application/json' \
--data '{"email": "user@mail.com","type": "email"}'
Пример ответа c атрибутами пользователей:
- json
{
"attributes": [
{
"attr_type": "server",
"key": "company",
"permission": "private",
"value": "facebook-promo"
},
{
"attr_type": "server",
"key": "custom-id",
"permission": "private",
"value": 48582
}
]
}
Пример ответа с объектом JSON:
- json
{ "region": "Asia",
"type": "new"
}
Аутентификация через социальные сети
Для получения информации о пользователе при аутентификации через социальные сети задайте URL для входа через социальные сети в настройках вашего варианта авторизации в Личном кабинете (раздел База пользователей > Хранилище > Собственное хранилище). На него будет отправляться запрос с данными, полученными от социальной сети.
Сценарий аутентификации:
- Клиент отправляет запрос
Auth via social network на сервер Xsolla Login. - Пользователь выполняет аутентификацию в социальной сети.
- Сервер Xsolla Login обрабатывает данные пользователя, полученные от социальной сети, и отправляет запрос на URL-адрес для входа через социальные сети. Ответ на запрос должен иметь формат, описанный в сценарии взаимодействия. В ответе вы можете указать список пользовательских атрибутов или любой необходимый объект JSON. Объект JSON, переданный вами в ответе, записывается в поле
partner_data
JWT пользователя.Запрос содержит данные пользователя во временном токене в заголовкеПримечаниеЧтобы подключить возможность передачи любого объекта JSON в ответе на запрос, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com.Authorization: Bearer <JWT>
. JWT пользователя, передаваемый в запросе, содержит следующие данные:Пример полезных данных токена:Поле Тип Описание exp Unix Timestamp Дата и время истечения JWT. Срок жизни JWT — 7 минут. Обязательный. iat Unix Timestamp Дата и время выдачи JWT. Обязательный. iss string Сервис, подписавший JWT: https://login.xsolla.com
. Обязательный.request_type string Константа: gateway_request
. Обязательный.xsolla_login_project_id string (UUID) ID вашего варианта авторизации в Личном кабинете. Обязательный. email string Email-адрес пользователя. sub string (UUID) ID пользователя, записанный на стороне сервера Xsolla Login. Обязательный. username string Имя пользователя. provider string Имя социальной сети, через которую пользователь авторизовался. Обязательный. id string ID пользователя в социальной сети. Обязательный. social_access_token string Токен доступа социальной сети, через которую аутентифицировался пользователь. Чтобы подключить передачу этого поля, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com. partner_data string Данные любого типа, возвращаемые вашим сервером в теле ответа во время аутентификации. Чтобы подключить передачу этого поля, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com. Copy- json
{ "exp": 1573635020, "iat": 1573634600, "iss": "https://login.xsolla.com", "request_type": "gateway_request", "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000", "sub": "00000000-0000-0000-0000-000000000000", "email": "example@test.com", "username": "Smith707", "provider": "google", "id": "123", }
Пример запроса на URL-адрес для создания пользователя:
Copyhttp
- http
- curl
POST https://your.hostname/your_social_authentication_uri HTTP/1.1 Authorization: Bearer {JWT} Content-Type: application/json {}
curl --request POST \ --url 'https://your.hostname/your_social_authentication_uri' \ --header 'authorization: bearer_JWT' \ --header 'content-type: application/json'
Пример ответа c атрибутами пользователей:
Copy- json
{ "attributes": [ { "attr_type": "server", "key": "company", "permission": "private", "value": "facebook-promo" }, { "attr_type": "server", "key": "custom-id", "permission": "private", "value": 48582 } ] }
Пример ответа с объектом JSON:
Copy- json
{ "region": "Asia", "type": "new" }
Сброс пароля пользователя
- Клиент отправляет запрос
Reset password на сервер Xsolla Login. - Сервер Xsolla Login отправляет письмо пользователю для подтверждения сброса пароля.
- Пользователь подтверждает сброс пароля в письме и переходит на страницу ввода нового пароля.
- Пользователь вводит новый пароль.
- Сервер Xsolla Login отправляет запрос на URL для сброса пароля.
Пример запроса на URL-адрес для создания пользователя:
Copyhttp
- http
- curl
POST https://your.hostname/your_reset_uri HTTP/1.1 Authorization: Bearer {JWT} Content-Type: application/json { "username": "john@gmail.com", "fields": { "password": "NewPa$$word1" } }
curl --request POST \ --url 'https://your.hostname/your_reset_uri' \ --header 'authorization: bearer_JWT' \ --header 'content-type: application/json' \ --data '{"email":"john@gmail.com","fields":{"password":"NewPa$$word1"}}'
Была ли статья полезна?Спасибо за обратную связь!Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.Продолжить чтение
Последнее обновление: 18 ноября 2024Полезные ссылки
Как подключить собственное хранилищеНашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.