Как использовать API-методы Login Widget SDK
Вы можете работать с API-методами Login Widget SDK отдельно от виджета, если хотите:
- использовать собственный дизайн виджета;
- реализовать только часть сценария работы виджета.
Примечание
Список методов для этой возможности ограничен.
Инициализация кода
Чтобы использовать API-методы Login Widget SDK без виджета, подключите указанный ниже код инициализации в тег <body>
:
Copy
1<script>
2const api = new XsollaLogin.Api({
3 projectId: 'someProjectId'
4});
5</script>
Код инициализации при использовании npm-пакета:
Copy
1import XsollaLogin from '@xsolla/login-sdk';
2const api = new XsollaLogin.Api({
3 projectId: 'someProjectId'
4});
В коде инициализации передаются следующие параметры:
Параметр | Тип | Описание |
---|---|---|
projectId | string | ID варианта авторизации из Личного кабинета. Обязательный. |
fullLocale | string | Язык интерфейса и регион в формате <language code>_<country code> , где:
Параметр влияет на сортировку социальных сетей по частоте использования в указанном регионе, а также на выбор языка для писем, отправляемых пользователям. |
callbackUrl | string | URL-адрес, с которым работает сервер Xsolla Login при успешной авторизации или регистрации. |
emailTemplate | string | Название проекта, от имени которого отправляются письма пользователям при авторизации. |
payload | string | Дополнительные данные, которые могут передаваться в коде. Добавляются в JWT пользователя при успешной авторизации. |
with_logout | boolean | Отзывать ли предыдущие токены при новой авторизации. Значение по умолчанию — false . |
clientId | string | ID клиентского приложения. Передается, если в приложении используется авторизация по протоколу OAuth 2.0. |
scope | string | Дополнительная информация, которую приложение запрашивает об аккаунте пользователя. Передается, если в приложении используется авторизация по протоколу OAuth 2.0. Возможные значения:
|
state | string | Дополнительная верификация пользователя, например, для предотвращения CSRF-атак. Должен содержать не менее 8 символов. |
redirectUrl | string | URL-адрес, на который перенаправляется пользователь после подтверждения аккаунта, успешной аутентификации или подтверждения сброса пароля. |
disableConfirmByLink | boolean | Отключать ли подтверждение беспарольной авторизации по email-адресу или номеру телефона по ссылке в письме. Значение по умолчанию — false . |
is_oauth2 | boolean | Использовать ли способ аутентификации пользователя по протоколу OAuth 2.0. Значение по умолчанию — false . |
Методы API
Вы можете использовать без виджета следующие API-методы Login Widget SDK:
- Регистрация пользователя по паролю
- Авторизация по паролю
- Подтверждение учетной записи
- Беспарольная авторизация
- Дозапрос полей без пароля
- Сброс пароля
- Сквозная аутентификация (Single Sign-On)
Регистрация пользователя по паролю
Метод | Описание | Параметры |
---|---|---|
api.signup(userInfo); | Регистрация нового пользователя. В объекте userInfo передаются данные о пользователе при регистрации. В ответе возвращается токен зарегистрированного пользователя. |
|
Copy
1let result
2// Request
3api.signup({
4 userInfo: {
5 email: 'email@address.com',
6 fields: {
7 nickname: 'Johny'
8 },
9 password: 'password123',
10 username: 'John'
11 }
12}).then((res) => {
13 result = res;
14})
15
16// Response
17result === {
18 login_url: 'https://someurl.com?token=XXXXXXX'
19}
Авторизация по паролю
Метод | Описание | Параметры |
---|---|---|
api.login(credentials); | Авторизация пользователя с паролем. В объекте credentials передаются данные о пользователе, необходимые для авторизации. В ответе возвращается токен авторизованного пользователя. |
|
Copy
1let result
2// Request
3api.login({
4 credentials: {
5 password: 'password123',
6 username: 'email@address.com'
7 }
8}).then((res) => {
9 result = res;
10})
11
12// Response
13result === {
14 login_url: 'https://someurl.com?token=XXXXXXX'
15}
16
17// Response with additional fields
18result === {
19 ask_fields: [{
20 confirmation_type: 'code' || 'link'
21 name: 'phone_number'
22 required: false
23 step: 0 // Displays the position of the field in the data retrieval queue.
24 type: 'phone'
25 validation: {} // Custom validation
26 }]
27 login_url: 'https://someurl.com?token=XXXXXXX',
28 token: 'sometoken'
29}
Подтверждение учетной записи
Метод | Описание | Параметры |
---|---|---|
api.resendEmail(username); | Повторная отправка пользователю письма с подтверждением учетной записи. Чтобы подтвердить учетную запись, пользователь должен перейти по ссылке в письме. В объекте username передается email-адрес пользователя. В ответе возвращается код 204. |
|
Copy
1let result
2// Request
3api.resendEmail({
4 username: 'email@address.com'
5}).then((res) => {
6 res.code === 204;
7})
Беспарольная авторизация
Сценарий пользователя:- Пользователь вводит телефон или email-адрес. В зависимости от введенных данных вызывается метод
api.phoneGetCode
илиapi.emailGetCode
. - Сервер получает данные и отправляет на номер телефона или email-адрес сообщение с кодом. Если при инициализации кода был передан параметр
disableConfirmByLink=true
, который отключает подтверждение авторизации по ссылке в письме, для автоматического перенаправления пользователя после перехода по ссылке используется методapi.getConfirmCode
. - Метод
api.phoneGetCode
илиapi.emailGetCode
возвращает параметрoperation_id
, который используется для подтверждения номера телефона или email-адреса с помощью методовapi.loginWithPhoneCode
илиapi.loginWithEmailCode
. При успешном подтверждении номера телефона или email-адреса возвращается URL-адрес с параметромtoken
, который используется в запросах дополнительных данных о пользователе.
Метод | Описание | Параметры |
---|---|---|
api.phoneGetCode({ phone_number, link_url, isOauth2 }); | Отправка кода подтверждения на номер телефона. В ответе возвращается параметр operation_id , который используется для подтверждения номера телефона. |
|
Copy
1let result
2// Request
3api.phoneGetCode({
4 phone_number: '+somenumber',
5 link_url: 'https://someurl.com',
6 isOauth2: true
7}).then((res) => {
8 result = res;
9})
10
11// Response
12result === {
13 operation_id: '2334j255fdf13d515fgd1'
14}
Метод | Описание | Параметры |
---|---|---|
api.phoneGetCode({ phone_number, link_url, isOauth2 }); | Отправка кода подтверждения на email-адрес. В ответе возвращается параметр operation_id , который используется для подтверждения email-адреса. |
|
Copy
1let result
2// Request
3api.emailGetCode({
4 email: 'email@address.com',
5 link_url: 'https://someurl.com',
6 isOauth2: true
7}).then((res) => {
8 result = res;
9})
10
11// Response
12result === {
13 operation_id: '2334j255fdf13d515fgd1'
14}
Метод | Описание | Параметры |
---|---|---|
api.getConfirmCode({ cancelToken, login, operation_id }); | Ожидание кода подтверждения для автоматического перенаправления пользователя после перехода по ссылке. |
|
Copy
1let result
2// Request
3const axiosCancelToken = Axios.CancelToken.source();
4
5api.getConfirmCode({
6 cancelToken: axiosCancelToken,
7 login: '+somenumber' || 'email@address.com',
8 operation_id: '334j255fdf13d515fgd1'
9}).then((res) => {
10 result = res;
11})
12
13// Response
14result === {
15 code: 'string'
16}
17
18// If the waiting time has elapsed, returns:
19result === {
20 error: {
21 code: '010-050',
22 description: 'Deadline exceeded.'
23 }
24}
25
26// If you no longer need to wait for verification through the link you can close the request waiting period:
27axiosCancelToken.cancel();
Метод | Описание | Параметры |
---|---|---|
api.loginWithPhoneCode({ phone_number, code, operation_id, isOauth2 }); | Подтверждение номера телефона. В ответе возвращается URL-адрес с параметром token , который используется в запросах дополнительных данных о пользователе. |
|
Copy
1let result
2// Request
3api.loginWithPhoneCode({
4 phone_number: 'email@address.com',
5 code: '3423',
6 operation_id: '334j255fdf13d515fgd1',
7 isOauth2: true
8}).then((res) => {
9 result = res;
10})
11
12// Response
13result === {
14 login_url: 'https://someurl.com?token=XXXXXXX'
15}
16
17
18// Response with additional fields
19result === {
20 ask_fields: [{
21 confirmation_type: 'code' || 'link'
22 name: 'email'
23 required: false
24 step: 0 // Displays the position of the field in the data retrieval queue.
25 type: 'email'
26 validation: {} // Custom validation
27 }]
28 login_url: 'https://someurl.com?token=XXXXXXX',
29 token: 'sometoken'
30}
Метод | Описание | Параметры |
---|---|---|
api.loginWithEmailCode({ email, code, operation_id, isOauth2 }); | Подтверждение email-адреса. В ответе возвращается URL-адрес с параметром token , который используется в запросах дополнительных данных о пользователе. |
|
Copy
1let result
2// Request
3api.loginWithEmailCode({
4 email: 'email@address.com',
5 code: '3423',
6 operation_id: '334j255fdf13d515fgd1',
7 isOauth2: true
8}).then((res) => {
9 result = res;
10})
11
12// Response
13result === {
14 login_url: 'https://someurl.com?token=XXXXXXX'
15}
16
17// Response with additional fields
18result === {
19 ask_fields: [{
20 confirmation_type: 'code' || 'link'
21 name: 'phone_number'
22 required: false
23 step: 0 // Displays the position of the field in the data retrieval queue.
24 type: 'phone'
25 validation: {} // Custom validation
26 }]
27 login_url: 'https://someurl.com?token=XXXXXXX',
28 token: 'sometoken'
29}
Дозапрос полей без пароля
Сценарий пользователя:- При успешной авторизации пользователя метод
api.loginWithEmailCode
илиapi.loginWithPhoneCode
возвращает массив с полями, которые можно отображать в приложении в отдельной форме и дополнительно собирать номер телефона или email-адрес пользователя. Список полей также можно получить с помощью вызова отдельного методаapi.getAskFields
. - Пользователь вводит номер телефона или email-адрес. Вызывается метод
api.ask
. - Сервер получает данные и отправляет на номер телефона или email-адрес сообщение с кодом. Если при инициализации кода был передан параметр
disableConfirmByLink=true
, который отключает подтверждение авторизации по ссылке в письме, для автоматического перенаправления пользователя после перехода по ссылке используется методapi.getConfirmCode
. - Метод
api.ask
возвращает параметрoperation_id
, который используется для подтверждения данных с помощью методовapi.loginWithPhoneCode
илиapi.loginWithEmailCode
. При успешном подтверждении данных возвращается URL-адрес, который используется для редиректа на авторизованного пользователя.
Метод | Описание | Параметры |
---|---|---|
api.getAskFields(token); | Получение списка полей для дозапроса. |
|
Copy
1let result
2// Request
3api.getAskFields({
4 token: 'sometoken'
5}).then((res) => {
6 result = res;
7})
8
9// Response
10result === [
11 {
12 confirmation_type: 'code' || 'link'
13 name: 'phone_number' || 'email'
14 required: false
15 step: 0 // Displays the position of the field in the data retrieval queue.
16 type: 'phone' || 'email'
17 validation: {} // Custom validation
18 }
19]
Метод | Описание | Параметры |
---|---|---|
api.ask({ fields, token, link_url }); | Отправка дополнительных данных о пользователе — номера телефона или email-адреса. В ответе возвращается параметр operation_id , который используется для подтверждения указанного номера телефона или email-адреса. Если подтверждение не требуется, в ответе возвращается URL-адрес с параметром token , который используется для редиректа на авторизованного пользователя. |
|
Copy
1let result
2// Request
3api.ask({
4 fields: {
5 phone_number: '+somenumber'
6 },
7 link_url: 'https://someurl.com',
8 token: 'sometoken'
9}).then((res) => {
10 result = res;
11})
12
13// Response
14result === {
15 error: {
16 code: '003-014'
17 description: 'Confirm phone number.'
18 details: { operation_id: 'BPaBScLM44GesoOYSxT5I8QfgIrTSURd' }
19 }
20}
21
22// Response without confirmation
23result === {
24 redirect_url: '<login_url>?token=<token>'
25}
Пример с отправкой email-адреса:
Copy
1let result
2// request
3api.ask({
4 fields: {
5 email: 'email@address.com'
6 },
7 link_url: 'https://someurl.com',
8 token: 'sometoken'
9}).then((res) => {
10 result = res;
11})
12
13// Response
14result === {
15 error: {
16 code: '003-011'
17 description: 'Confirm email.'
18 details: { operation_id: 'BPaBScLM44GesoOYSxT5I8QfgIrTSURd' }
19 }
20}
21
22// Response without confirmation
23result === {
24 redirect_url: '<login_url>?token=<token>'
25}
Метод | Описание | Параметры |
---|---|---|
api.getConfirmCode({ cancelToken, login, operation_id }); | Ожидание кода подтверждения для автоматического перенаправления пользователя после перехода по ссылке. |
|
Copy
1let result
2// Request
3const axiosCancelToken = Axios.CancelToken.source();
4
5api.getConfirmCode({
6 cancelToken: axiosCancelToken,
7 login: '+somenumber' || 'email@address.com',
8 operation_id: '334j255fdf13d515fgd1'
9}).then((res) => {
10 result = res;
11})
12
13// Response
14result === {
15 code: 'string'
16}
17
18// If the waiting time has elapsed, returns:
19result === {
20 error: {
21 code: '010-050',
22 description: 'Deadline exceeded.'
23 }
24}
25
26// If you no longer need to wait for verification through the link you can close the request waiting period:
27axiosCancelToken.cancel();
Метод | Описание | Параметры |
---|---|---|
api.loginWithPhoneCode({ phone_number, code, operation_id, isOauth2 }); | Подтверждение номера телефона. В ответе возвращается URL-адрес с параметром token , который используется в запросах дополнительных данных о пользователе. |
|
Copy
1let result
2// Request
3api.loginWithPhoneCode({
4 phone_number: 'email@address.com',
5 code: '3423',
6 operation_id: '334j255fdf13d515fgd1',
7 isOauth2: true
8}).then((res) => {
9 result = res;
10})
11
12// Response
13result === {
14 login_url: 'https://someurl.com?token=XXXXXXX'
15}
16
17
18// Response with additional fields
19result === {
20 ask_fields: [{
21 confirmation_type: 'code' || 'link'
22 name: 'email'
23 required: false
24 step: 0 // Displays the position of the field in the data retrieval queue.
25 type: 'email'
26 validation: {} // Custom validation
27 }]
28 login_url: 'https://someurl.com?token=XXXXXXX',
29 token: 'sometoken'
30}
Метод | Описание | Параметры |
---|---|---|
api.loginWithEmailCode({ email, code, operation_id, isOauth2 }); | Подтверждение email-адреса. В ответе возвращается URL-адрес с параметром token , который используется в запросах дополнительных данных о пользователе. |
|
Copy
1let result
2// Request
3api.loginWithEmailCode({
4 email: 'email@address.com',
5 code: '3423',
6 operation_id: '334j255fdf13d515fgd1',
7 isOauth2: true
8}).then((res) => {
9 result = res;
10})
11
12// Response
13result === {
14 login_url: 'https://someurl.com?token=XXXXXXX'
15}
16
17// Response with additional fields
18result === {
19 ask_fields: [{
20 confirmation_type: 'code' || 'link'
21 name: 'phone_number'
22 required: false
23 step: 0 // Displays the position of the field in the data retrieval queue.
24 type: 'phone'
25 validation: {} // Custom validation
26 }]
27 login_url: 'https://someurl.com?token=XXXXXXX',
28 token: 'sometoken'
29}
Сброс пароля
Сценарий пользователя:- Приложение открывает форму, в которой пользователь вводит email-адрес или имя пользователя. Вызывается метод
api.reset
. - Сервер отправляет пользователю письмо с подтверждением.
- Пользователь переходит по ссылке в письме и открывает форму для ввода нового пароля.
- Пользователь вводит новый пароль. Вызывает метод
api.set
.
Метод | Описание | Параметры |
---|---|---|
api.reset(username); | Сброс пароля с подтверждением действия. Чтобы подтвердить сброс пароля, пользователь должен перейти по ссылке в письме. В объекте username передается имя или email-адрес пользователя. В ответе возвращается код 204 . |
|
Copy
1let result
2// Request
3api.reset({
4 username: 'John'
5}).then((res) => {
6 res.code === 204;
7})
Метод | Описание | Параметры |
---|---|---|
api.set({ new_password, reset_code, user_id }); | Установка нового пароля с подтверждением действия. Чтобы подтвердить установку нового пароля, пользователь должен перейти по ссылке в письме. В ответе возвращается код 204 . |
|
Copy
1let result
2// Request
3api.set({
4 new_password: 'newpass',
5 reset_code: '3423',
6 user_id: '324324234'
7}).then((res) => {
8 res.code === 204;
9})
Сквозная аутентификация (Single Sign-On)
Примечание
Подробная информация о сквозной аутентификации представлена в инструкции.
Параметр | Тип | Описание |
---|---|---|
api.checkUserAuthSSO(); | Проверка входа пользователя в систему через сервис. В случае успеха возвращается одноразовый код авторизации code . |
Copy
1let result
2// Request
3api
4 .checkUserAuthSSO()
5 .then(res => {
6 result === res;
7 });
8
9result === {
10 code: "examplecode"
11}
Метод | Описание | Параметры |
---|---|---|
api.userAuthSSOWithRedirect(loginUrl); | Проверка входа пользователя в систему через сервис. В случае успеха происходит перенаправление на URL-адрес — сгенерированный loginUrl с кодом авторизации. |
|
Copy
1// Request
2api
3 .userAuthSSOWithRedirect(
4 loginUrl: 'some-redirect-url.com'
5 )
6 .then(res => {
7 res.code === 302;
8 });
Метод | Описание | Параметры |
---|---|---|
api.logout(token, session); | Вывод пользователя из системы и удаление пользовательской сессии в соответствии со значением параметра session . |
|
Copy
1// Request
2api
3 .logout(
4 token: 'exampleToken',
5 session: 'sso' | 'all'
6 )
7 .then(res => {
8 res.code === 204;
9 });
Параметр | Тип | Описание |
---|---|---|
api.clearSSO(); | Удаление файлов cookie сквозной аутентификации с текущего устройства пользователя. В случае успеха возвращается код 204 . |
Copy
1// Request
2api
3 .clearSSO()
4 .then(() => {
5 // Success
6 });
Была ли статья полезна?
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.