Авторизация

В ход в аккаунт

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

// Sign in using username and password
Mst.Client.Auth.SignInWithLoginAndPassword("username", "password", (accountInfo, error) => {
    Debug.Log($"Account Info: {accountInfo}; Error: {error}");
});

В следующем примере мы уже используем токен авторизации. Этот токен генерирует сервер при стандартной авторизации. Но если вы регистрируетесь в игре при помощи других систем, таких как Facebook и Google, то вы можете использовать полученный от этих сервисов токен для регистрации и авторизации вашего пользователя в системе.

// Sign in using token
Mst.Client.Auth.SignInWithToken("your_token_here", (accountInfo, error) => {
    Debug.Log($"Account Info: {accountInfo}; Error: {error}");
});

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

MstOptions signInCredantials = new MstOptions();
signInCredantials.Set(MstDictKeys.userName, "myUsername");
signInCredantials.Set(MstDictKeys.userPassword, "myPassword");
signInCredantials.Set("lang", "en_US");

// Sign in using options class
Mst.Client.Auth.SignIn(signInCredantials, (accountInfo, error) => {
    Debug.Log($"Account Info: {accountInfo}; Error: {error}");
});

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

// Sign in as guest
Mst.Client.Auth.SignInAsGuest((accountInfo, error) => {
    Debug.Log($"Account Info: {accountInfo}; Error: {error}");
});

Доступ к данным учетной записи пользователя, который успешно вошел в систему

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

// Get account info of signed in user from client Auth module
var account = Mst.Client.Auth.AccountInfo;
Debug.Log($"Username: {account.Username}");
Debug.Log($"Email: {account.Email}");
Debug.Log($"IsGuest: {account.IsGuest}");
// ...

Проверка состояния авторизации

Для проверки авторизован ли пользователь используется команда:

// Check if user signed in
if (Mst.Client.Auth.IsSignedIn)
    Debug.Log($"User: {Mst.Client.Auth.AccountInfo.Username} is successfully signed in.");

Бывают моменты когда вам необходимо знать запущен ли процесс авторизация пользователя в данный момент. Это можно узнать при помощи команды:

// Check if user signing in
if (Mst.Client.Auth.IsNowSigningIn)
    Debug.Log($"Sign in process is running");

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

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

MstOptions signUpCredantials = new MstOptions();
signUpCredantials.Set(MstDictKeys.userName, "myUsername");
signUpCredantials.Set(MstDictKeys.userPassword, "myPassword");
signUpCredantials.Set(MstDictKeys.userEmail, "myEmail@box.com");

// Sign up using username, password and email
Mst.Client.Auth.SignUp(signUpCredantials, (isSuccess, error) => {
    Debug.Log($"Success: {isSuccess}; Error: {error}");
});

Подтверждение адреса электронной почты пользователя

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

Debug.Log($"IsEmailConfirmed: {Mst.Client.Auth.AccountInfo.IsEmailConfirmed}");
// Output IsEmailConfirmed: false

Если после регистрации вы желаете, чтобы адрес электронной почты нового пользователя был подтвержден по умолчанию, то отключите флажок Use Email Confirmation на вашем модуле авторизации как показано на скриншоте.

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

Mst.Client.Auth.RequestEmailConfirmationCode - отправляет запрос мастер серверу для получения кода подтверждения адреса электронной почты. Этот код приходит пользователю на указанный во время регистрации адрес электронной почты.

// Requests email confirmation code from master server
Mst.Client.Auth.RequestEmailConfirmationCode((isSuccess, error) => {
    Debug.Log($"Success: {isSuccess}; Error: {error}");
});

Mst.Client.Auth.ConfirmEmail - отправляет запрос мастер серверу с кодом подтверждения адреса электронной почты. Если код правильный, то запрос успешный, если код не является верным, то вы получите результат с ошибкой.

// Requests email confirmation using code you've received from master server
Mst.Client.Auth.ConfirmEmail("confirmation_code_Here", (isSuccess, error) => {
    Debug.Log($"Success: {isSuccess}; Error: {error}");
});

Сброс пароля учетной записи

Бывают ситуации, когда пользователь забывает свой пароль. Обидно! Досадно! Но ладно! Решить это недоразумение ему помогут команды сброса пароля.

Mst.Client.Auth.RequestPasswordReset - отправляет запрос мастеру о том, чтобы тот сгенерировал код сброса пароля и отправил его на указанный пользователем адрес электронной почты, который также должен быть зарегистрирован в системе.

// Requests reset password code
Mst.Client.Auth.RequestPasswordReset("your_email@here.com", (isSuccess, error) => {
    Debug.Log($"Success: {isSuccess}; Error: {error}");
});

Mst.Client.Auth.ChangePassword - отправляет запрос мастеру о том, чтобы тот сбросил пароль применив указанный пользователем полученный код сброса. При этом пользователь также указывает адрес электронной почты, который также должен быть зарегистрирован в системе и новый пароль.

// Requests reset password using email, reset code and new password
Mst.Client.Auth.ChangePassword("your_email@here.com", "reset_code_here", "new_password_here", (isSuccess, error) => {
    Debug.Log($"Success: {isSuccess}; Error: {error}");
});