С помощью Firebase Authentication можно разрешить пользователям входить в игру одним или несколькими способами, в том числе с помощью адреса электронной почты и пароля, а также через поставщиков интегрированных решений для входа, таких как "Войти с аккаунтом Google" и Facebook Login. В этом руководстве рассказываетсяFirebase Authentication, как добавить в игру возможность входа с помощью адреса электронной почты и пароля.
Подготовка
Чтобы использовать Firebase Authentication, вам необходимо:
Зарегистрируйте проект Unity и настройте его для использования Firebase.
Если в проекте уже используется Firebase, можете пропустить этот шаг.
Если у вас нет проекта Unity, вы можете скачать пример приложения.
Добавьте в свой проект Unity Firebase Unity SDK (в частности,
FirebaseAuth.unitypackage).
Обратите внимание, что для добавления Firebase в проект Unity нужно выполнить действия как в консоли Firebase, так и в вашем открытом проекте Unity. Например, вам потребуется скачать файлы конфигурации Firebase из консоли, а затем переместить их в проект Unity.
Как зарегистрировать новых пользователей
Создайте форму, в которой новые пользователи смогут зарегистрироваться в игре, указав адрес электронной почты и пароль. Когда пользователь заполняет форму, проверьте указанный им адрес электронной почты и пароль, а затем передайте их методу CreateUserWithEmailAndPasswordAsync:
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
// Firebase user has been created.
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("Firebase user created successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
Как войти в аккаунт существующему пользователю
Создайте форму, в которой существующие пользователи смогут входить в аккаунт, используя адрес электронной почты и пароль. Когда пользователь заполняет форму, вызовите метод SignInWithEmailAndPasswordAsync:
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
return;
}
Firebase.Auth.AuthResult result = task.Result;
Debug.LogFormat("User signed in successfully: {0} ({1})",
result.User.DisplayName, result.User.UserId);
});
Как настроить обработчик событий изменения статуса аутентификации и получить пользовательские данные
Чтобы реагировать на события входа и выхода, прикрепите обработчик событий к глобальному объекту аутентификации. Этот обработчик вызывается при каждом изменении статуса входа пользователя. Поскольку обработчик запускается только после полной инициализации объекта аутентификации и завершения всех сетевых вызовов, он является лучшим местом для получения информации о вошедшем в аккаунт пользователе.
Зарегистрируйте обработчик событий, используя поле StateChanged объекта FirebaseAuth. Когда пользователь успешно входит в систему, вы можете получить информацию о нем в обработчике событий.
Наконец, когда для этого объекта будет вызван метод Destroy, он автоматически вызовет метод OnDestroy. Удалите ссылки на объект Auth в OnDestroy.
void InitializeFirebase() {
auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
auth.StateChanged += AuthStateChanged;
AuthStateChanged(this, null);
}
void AuthStateChanged(object sender, System.EventArgs eventArgs) {
if (auth.CurrentUser != user) {
bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
&& auth.CurrentUser.IsValid();
if (!signedIn && user != null) {
Debug.Log("Signed out " + user.UserId);
}
user = auth.CurrentUser;
if (signedIn) {
Debug.Log("Signed in " + user.UserId);
displayName = user.DisplayName ?? "";
emailAddress = user.Email ?? "";
photoUrl = user.PhotoUrl ?? "";
}
}
}
void OnDestroy() {
auth.StateChanged -= AuthStateChanged;
auth = null;
}
Дальнейшие действия
Узнайте, как добавить поддержку других поставщиков идентификационной информации и анонимных гостевых аккаунтов: