Аутентификация
Эта инструкция показывает, как с помощью методов SDK реализовать:
- регистрацию пользователя;
- запрос пользователем повторной отправки письма с подтверждением регистрации;
- авторизацию пользователя;
- сброс пароля пользователя.
Для аутентификации пользователя может использоваться имя пользователя или email-адрес. В приведенных ниже примерах применяется имя пользователя, а email-адрес используется для подтверждения регистрации пользователя и для сброса пароля.
Для своего приложения вам потребуется создать интерфейс и логику сложнее, чем в примерах. Возможный вариант реализации системы авторизации приведен в демо.
Реализация регистрации пользователя
В инструкции описана реализация следующей логики:
Создание интерфейса страницы
Создайте сцену для страницы регистрации и добавьте на нее следующие элементы:
- поле для ввода имени пользователя;
- поле для ввода email-адреса пользователя;
- поле для ввода пароля пользователя;
- кнопка регистрации пользователя.
На рисунке ниже приведен пример структуры страницы.
Создание контроллера страницы
- Создайте скрипт
RegistrationPage
, наследуемый от стандартного класса MonoBehaviour. - Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели
Inspector . - Добавьте логику для обработки нажатия кнопки регистрации:
- В методе
Start
подпишитесь на событие нажатия кнопки. - Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
- В анонимном методе объявите переменные
username
,email
иpassword
и инициализируйте их значениями из полей на странице. - Вызовите метод SDK
XsollaLogin.Instance.Registration
и передайте в него переменныеusername
,email
,password
и следующие методы:
- В методе
OnSuccess
— вызывается в случае успешной регистрации;OnError
— вызывается в случае ошибки.
В примерах скриптов методы OnSuccess
и OnError
вызывают стандартный метод Debug.Log. Код и описание ошибки передаются в параметре error
.
Вы можете добавить другие действия. Например, при успешной регистрации открывать страницу с повторным запросом письма о регистрации или страницу авторизации.
Пример скрипта для страницы регистрации:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class RegistrationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private InputField EmailInputField;
[SerializeField] private InputField PasswordInputField;
[SerializeField] private Button RegisterButton;
private void Start()
{
// Handling the button click
RegisterButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
var email = EmailInputField.text;
var password = PasswordInputField.text;
XsollaLogin.Instance.Registration(username, email, password, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Registration successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Registration failed. Description: {error.errorMessage}");
// Some actions
}
}
}
Настройка письма о подтверждении регистрации
При успешной регистрации пользователю приложения отправляется письмо для подтверждения регистрации на указанный email-адрес. Вы можете кастомизировать письма для пользователей в Личном кабинете.
Если вы разрабатываете Android-приложение, настройте внешние ссылки, чтобы возвращать пользователя в приложение после подтверждения регистрации.
Реализация запроса повторной отправки письма с подтверждением регистрации
В инструкции описана реализация следующей логики:
Создание интерфейса страницы
Создайте сцену для страницы запроса повторной отправки письма и добавьте на нее следующие элементы:
- поле для ввода имени пользователя или email-адреса;
- кнопка повторной отправки письма.
На рисунке ниже приведен пример структуры страницы.
Создание контроллера страницы
- Создайте скрипт
ResendConfirmationEmail
, наследуемый от стандартного класса MonoBehaviour. - Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели
Inspector . - Добавьте логику для обработки нажатия кнопки повторной отправки письма:
- В методе
Start
подпишитесь на событие нажатия кнопки. - Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
- В анонимном методе объявите переменную
username
и инициализируйте ее значением из поля ввода на странице. - Вызовите метод SDK
XsollaLogin.Instance.ResendEmail
и передайте в него переменнуюusername
и методыOnSuccess
иOnError
.
- В методе
Пример скрипта для страницы запроса повторной отправки письма:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class ResendConfirmationEmail : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private Button ResendEmailButton;
private void Start()
{
// Handling the button click
ResendEmailButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
XsollaLogin.Instance.ResendConfirmationLink(username, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Resend confirmation email successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Resend confirmation email failed. Description: {error.errorMessage}");
// Some actions
}
}
}
При успешном запросе пользователю отправляется письмо для подтверждения регистрации на указанный при регистрации email-адрес.
Реализация авторизации пользователя
В инструкции описана реализация следующей логики:
Создание интерфейса страницы
Создайте сцену для страницы авторизации и добавьте на нее следующие элементы:
- поле для ввода имени пользователя;
- поле для ввода пароля;
- флажок для запоминания учетной записи;
- кнопка авторизации.
На рисунке ниже приведен пример структуры страницы.
Создание контроллера страницы
- Создайте скрипт
AutorizationPage
, наследуемый от стандартного класса MonoBehaviour. - Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели
Inspector . - Добавьте логику для обработки нажатия кнопки авторизации:
- В методе
Start
подпишитесь на событие нажатия кнопки. - Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
- В анонимном методе объявите переменные
username
,password
и инициализируйте их значениями из полей ввода на странице авторизации. Создайте переменнуюrememberMe
и инициализируйте ее состоянием флажка для запоминания учетной записи. - Вызовите метод SDK
XsollaLogin.Instance.SignIn
и передайте в него переменныеusername
,password
,rememberMe
и методыOnSuccess
иOnError
.
- В методе
token
передается токен авторизации, который используется в запросах к серверам Иксоллы.Пример скрипта для страницы авторизации:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class AuthorizationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private InputField PasswordInputField;
[SerializeField] private Toggle RememberMeToggle;
[SerializeField] private Button AuthorizationButton;
private void Start()
{
// Handling the button click
AuthorizationButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
var password = PasswordInputField.text;
var rememberMe = RememberMeToggle.isOn;
XsollaLogin.Instance.SignIn(username, password, rememberMe, null, onSuccess: OnSuccess, onError: OnError);
});
}
private void OnSuccess(string token)
{
UnityEngine.Debug.Log($"Authorization successful. Token: {token}");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Authorization failed. Description: {error.errorMessage}");
// Some actions
}
}
}
Реализация сброса пароля
В инструкции описана реализация следующей логики:
Создание интерфейса страницы
Создайте сцену для страницы сброса пароля и добавьте на нее следующие элементы:
- поле для ввода имени пользователя или email-адреса;
- кнопка сброса пароля.
На рисунке ниже приведен пример структуры страницы.
Создание контроллера страницы
- Создайте скрипт
ResetPasswordPage
, наследуемый от стандартного класса MonoBehaviour. - Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели
Inspector . - Добавьте логику для обработки нажатия кнопки сброса пароля:
- В методе
Start
подпишитесь на событие нажатия кнопки. - Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
- В анонимном методе объявите переменную
username
и инициализируйте ее значением из поля ввода на странице сброса пароля. - Вызовите метод SDK
XsollaLogin.Instance.ResetPassword
и передайте в него переменнуюusername
и методыOnSuccess
иOnError
.
- В методе
Пример скрипта для страницы сброса пароля:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class ResetPasswordPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private InputField UsernameInput;
[SerializeField] private Button ResetPasswordButton;
private void Start()
{
// Handling the button click
ResetPasswordButton.onClick.AddListener(() =>
{
var username = UsernameInput.text;
XsollaLogin.Instance.ResetPassword(username, OnSuccess, OnError);
});
}
private void OnSuccess()
{
UnityEngine.Debug.Log("Password reset successful");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Password reset failed. Description: {error.errorMessage}");
// Some actions
}
}
}
При успешном запросе сброса пароля пользователю отправляется письмо со ссылкой для изменения пароля. В Личном кабинете в настройках варианта авторизации (Общие настройки > URL > Callback URL) вы можете настроить URL-адрес, на который пользователь будет перенаправлен после успешной авторизации (аутентификации, подтверждения электронной почты или сброса пароля).
Эта инструкция показывает, как использовать методы SDK, чтобы реализовать регистрацию и авторизацию пользователя в приложении с помощью аккаунта в социальной сети.
В отличие от аутентификации пользователя с помощью имени пользователя/email-адреса и пароля, реализация отдельной логики для регистрации пользователя не нужна. Если пользователь входит в систему впервые через аккаунт социальной сети, новая учетная запись создается автоматически.
Если в вашем приложении аккаунт социальной сети является альтернативным способом аутентификации, аккаунт автоматически привязывается к уже существующей учетной записи пользователя при выполнении следующих условий:
- Зарегистрированный с помощью имени пользователя или email-адреса пользователь вошел в приложение через аккаунт социальной сети.
- Социальная сеть возвращает email-адрес.
- Email-адрес из социальной сети совпадает с email-адресом, указанными пользователем при регистрации в вашем приложении.
LinkSocialProvider
.В инструкции описана реализация следующей логики:
Примеры приведены для аутентификации пользователя с помощью аккаунта в Twitter, настройка других социальных сетей выполняется аналогично.
Для своего приложения вам потребуется создать интерфейс и логику сложнее, чем в примерах. Возможный вариант реализации системы авторизации приведен в демо.
Создание интерфейса страницы
Создайте сцену для страницы входа в приложение и добавьте на нее кнопку авторизации через социальную сеть. На рисунке ниже приведен пример структуры страницы.
Создание контроллера страницы
- Создайте скрипт
SocialAuthorizationPage
, наследуемый от стандартного класса MonoBehaviour. - Объявите переменные для элементов интерфейса страницы входа в приложение и присвойте им значения в панели
Inspector . - Добавьте логику обработки нажатия кнопки авторизации:
- В методе
Start
подпишитесь на событие нажатия кнопки. - Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
- Для передачи URL страницы авторизации объявите переменную
url
в анонимном методе. Инициализируйте ее с помощью метода SDKGetSocialNetworkAuthUrl
, передав в параметреSocialProvider
значениеFacebook
. - Для открытия браузера вызовите метод
BrowserHelper.Instance.Open
, передайте в него переменнуюurl
и значениеtrue
для использования встроенного браузера.
- В методе
- Для получения токена и закрытия браузера отследите изменение URL страницы после успешной регистрации пользователя:
- Объявите переменную
singlePageBrowser
и инициализируйте ее с помощью методаBrowserHelper.Instance.GetLastBrowser
. - Подпишитесь на событие изменения URL активной страницы и установите метод
OnUrlChanged
в качестве обработчика.
- Объявите переменную
- Для получения токена и закрытия браузера отследите изменение URL страницы после успешной регистрации пользователя:
- Реализуйте получение токена:
- С помощью утилитарного метода
ParseUtils.TryGetValueFromUrl
выполните парсинг URL активной страницы, который передается в методеOnUrlChanged
. - Добавьте проверку на наличие в URL активной страницы кода аутентификации. Метод
ParseUtils.TryGetValueFromUrl
передает код аутентификации в переменнойcode
. - Для обмена кода аутентификации на токен вызовите метод SDK
ExchangeCodeToToken
и передайте в него переменнуюcode
и следующие методы:OnSuccess
— вызывается в случае успешной авторизации;OnError
— вызывается в случае ошибки.
- С помощью утилитарного метода
В примере скрипта методы OnSuccess
и OnError
вызывают стандартный метод Debug.Log. Вы можете добавить другие действия.
Если пользователь успешно авторизовался, в параметре token
передается токен авторизации, который используется в запросах к серверам Иксоллы. При ошибке в параметре error
передаются код и описание ошибки.
- После получения токена удалите игровой объект с браузером.
Пример скрипта для страницы авторизации:
- C#
using UnityEngine;
using UnityEngine.UI;
using Xsolla.Core;
using Xsolla.Login;
namespace Recipes
{
public class SocialAuthorizationPage : MonoBehaviour
{
// Declaration of variables for UI elements on the page
[SerializeField] private Button FacebookButton;
private void Start()
{
// Handling the button click
FacebookButton.onClick.AddListener(() =>
{
// Opening browser
var url = XsollaLogin.Instance.GetSocialNetworkAuthUrl(SocialProvider.Facebook);
BrowserHelper.Instance.Open(url, true);
// Determining the end of authentication
BrowserHelper.Instance.InAppBrowser.AddUrlChangeHandler(OnUrlChanged);
});
}
// Getting token
private void OnUrlChanged(string url)
{
if (ParseUtils.TryGetValueFromUrl(url, ParseParameter.code, out var code))
{
XsollaLogin.Instance.ExchangeCodeToToken(code, OnSuccess, OnError);
Destroy(BrowserHelper.Instance.gameObject);
}
}
private void OnSuccess(string token)
{
UnityEngine.Debug.Log($"Authorization successful. Token: {token}");
// Some actions
}
private void OnError(Error error)
{
UnityEngine.Debug.Log($"Authorization failed. Description: {error.errorMessage}");
// Some actions
}
}
}
Нашли опечатку или ошибку в тексте? Выделите ее и нажмите Ctrl+Enter.