SDK enterprise-уровня для Unity / Аутентификация

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

Следуйте пошаговым инструкциям ниже, чтобы начать работать с основными функциями SDK.

Аутентификация пользователя по имени пользователя/email-адресу и паролю

Эта инструкция показывает, как с помощью методов SDK реализовать:

  • регистрацию пользователя;
  • запрос пользователем повторной отправки письма с подтверждением регистрации;
  • авторизацию пользователя;
  • сброс пароля пользователя.

Для аутентификации пользователя может использоваться имя пользователя или email-адрес. В приведенных ниже примерах применяется имя пользователя, а email-адрес используется для подтверждения регистрации пользователя и для сброса пароля.

Примечание
Если вы дополнительно используете виджет авторизации на сайте (например, в веб-магазине), убедитесь, что на сайте и в вашем приложении аутентификация пользователя реализована одинаково. По умолчанию виджет использует email-адрес пользователя. Для настройки аутентификации по имени пользователя обратитесь к аккаунт-менеджеру проекта.

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

Реализация регистрации пользователя

В инструкции описана реализация следующей логики:

Создание интерфейса страницы

Создайте сцену для страницы регистрации и добавьте на нее следующие элементы:

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

На рисунке ниже приведен пример структуры страницы.

Создание контроллера страницы

  1. Создайте скрипт RegistrationPage, наследуемый от стандартного класса MonoBehaviour.
  2. Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели Inspector.
  3. Добавьте логику для обработки нажатия кнопки регистрации:
    1. В методе Start подпишитесь на событие нажатия кнопки.
    2. Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
    3. В анонимном методе объявите переменные username, email и password и инициализируйте их значениями из полей на странице.
    4. Вызовите метод SDK XsollaLogin.Instance.Registration и передайте в него переменные username, email, password и следующие методы:
      • OnSuccess — вызывается в случае успешной регистрации;
      • OnError — вызывается в случае ошибки.
Примечание

В примерах скриптов методы OnSuccess и OnError вызывают стандартный метод Debug.Log. Код и описание ошибки передаются в параметре error.

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

Пример скрипта для страницы регистрации:

Copy
Full screen
Small screen

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-приложение, настройте внешние ссылки, чтобы возвращать пользователя в приложение после подтверждения регистрации.

Примечание
Вы можете отключить подтверждение регистрации с помощью электронной почты, если для вас это приемлемо с точки зрения безопасности. Для отключения обратитесь к аккаунт-менеджеру проекта или напишите письмо на csm@xsolla.com.

Реализация запроса повторной отправки письма с подтверждением регистрации

В инструкции описана реализация следующей логики:

Создание интерфейса страницы

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

  • поле для ввода имени пользователя или email-адреса;
  • кнопка повторной отправки письма.

На рисунке ниже приведен пример структуры страницы.

Создание контроллера страницы

  1. Создайте скрипт ResendConfirmationEmail, наследуемый от стандартного класса MonoBehaviour.
  2. Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели Inspector.
  3. Добавьте логику для обработки нажатия кнопки повторной отправки письма:
    1. В методе Start подпишитесь на событие нажатия кнопки.
    2. Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
    3. В анонимном методе объявите переменную username и инициализируйте ее значением из поля ввода на странице.
    4. Вызовите метод SDK XsollaLogin.Instance.ResendEmail и передайте в него переменную username и методы OnSuccess и OnError.

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

Copy
Full screen
Small screen

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-адрес.

Реализация авторизации пользователя

В инструкции описана реализация следующей логики:

Создание интерфейса страницы

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

  • поле для ввода имени пользователя;
  • поле для ввода пароля;
  • флажок для запоминания учетной записи;
  • кнопка авторизации.

На рисунке ниже приведен пример структуры страницы.

Создание контроллера страницы

  1. Создайте скрипт AutorizationPage, наследуемый от стандартного класса MonoBehaviour.
  2. Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели Inspector.
  3. Добавьте логику для обработки нажатия кнопки авторизации:
    1. В методе Start подпишитесь на событие нажатия кнопки.
    2. Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
    3. В анонимном методе объявите переменные username, password и инициализируйте их значениями из полей ввода на странице авторизации. Создайте переменную rememberMe и инициализируйте ее состоянием флажка для запоминания учетной записи.
    4. Вызовите метод SDK XsollaLogin.Instance.SignIn и передайте в него переменные username, password, rememberMe и методы OnSuccess и OnError.
Примечание
При успешной авторизации пользователя в параметре token передается токен авторизации, который используется в запросах к серверам Иксоллы.

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

Copy
Full screen
Small screen

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-адреса;
  • кнопка сброса пароля.

На рисунке ниже приведен пример структуры страницы.

Создание контроллера страницы

  1. Создайте скрипт ResetPasswordPage, наследуемый от стандартного класса MonoBehaviour.
  2. Объявите переменные для элементов интерфейса страницы и присвойте им значения в панели Inspector.
  3. Добавьте логику для обработки нажатия кнопки сброса пароля:
    1. В методе Start подпишитесь на событие нажатия кнопки.
    2. Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
    3. В анонимном методе объявите переменную username и инициализируйте ее значением из поля ввода на странице сброса пароля.
    4. Вызовите метод SDK XsollaLogin.Instance.ResetPassword и передайте в него переменную username и методы OnSuccess и OnError.

Пример скрипта для страницы сброса пароля:

Copy
Full screen
Small screen
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-адресом, указанными пользователем при регистрации в вашем приложении.
Примечание
Вы можете реализовать ручную привязку аккаунта социальной сети. Добавьте в ваше приложение страницу привязки социальной сети к учетной записи пользователя, в контроллере страницы используйте метод SDK LinkSocialProvider.

В инструкции описана реализация следующей логики:

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

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

Создание интерфейса страницы

Создайте сцену для страницы входа в приложение и добавьте на нее кнопку авторизации через социальную сеть. На рисунке ниже приведен пример структуры страницы.

Создание контроллера страницы

  1. Создайте скрипт SocialAuthorizationPage, наследуемый от стандартного класса MonoBehaviour.
  2. Объявите переменные для элементов интерфейса страницы входа в приложение и присвойте им значения в панели Inspector.
  3. Добавьте логику обработки нажатия кнопки авторизации:
    1. В методе Start подпишитесь на событие нажатия кнопки.
    2. Добавьте анонимный метод, который будет вызываться после нажатия на кнопку.
    3. Для передачи URL страницы авторизации объявите переменную url в анонимном методе. Инициализируйте ее с помощью метода SDK GetSocialNetworkAuthUrl, передав в параметре SocialProvider значение Facebook.
    4. Для открытия браузера вызовите метод BrowserHelper.Instance.Open, передайте в него переменную url и значение true для использования встроенного браузера.
Примечание
Аутентификация через социальные сети недоступна с помощью внешнего браузера. В состав SDK включен встроенный браузер, разработанный Иксоллой. Вы можете использовать его или любой другой.
    1. Для получения токена и закрытия браузера отследите изменение URL страницы после успешной регистрации пользователя:
      1. Объявите переменную singlePageBrowser и инициализируйте ее с помощью метода BrowserHelper.Instance.GetLastBrowser.
      2. Подпишитесь на событие изменения URL активной страницы и установите метод OnUrlChanged в качестве обработчика.
  1. Реализуйте получение токена:
    1. С помощью утилитарного метода ParseUtils.TryGetValueFromUrl выполните парсинг URL активной страницы, который передается в методе OnUrlChanged.
    2. Добавьте проверку на наличие в URL активной страницы кода аутентификации. Метод ParseUtils.TryGetValueFromUrl передает код аутентификации в переменной code.
    3. Для обмена кода аутентификации на токен вызовите метод SDK ExchangeCodeToToken и передайте в него переменную code и следующие методы:
      • OnSuccess — вызывается в случае успешной авторизации;
      • OnError — вызывается в случае ошибки.
Примечание

В примере скрипта методы OnSuccess и OnError вызывают стандартный метод Debug.Log. Вы можете добавить другие действия.

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

    1. После получения токена удалите игровой объект с браузером.

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

Copy
Full screen
Small screen
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
		}
	}
}
Была ли статья полезна?
Спасибо!
Что может сделать страницу еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.
Скрыть
Последнее обновление: 10 октября 2023

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

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