Начало работы с аутентификацией Firebase в Unity

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

Прежде чем начать

Прежде чем вы сможете использовать Firebase Authentication , вам необходимо:

  • Зарегистрируйте свой проект Unity и настройте его для использования Firebase.

    • Если ваш проект Unity уже использует Firebase, значит, он уже зарегистрирован и настроен для Firebase.

    • Если у вас нет проекта Unity, вы можете скачать образец приложения .

  • Добавьте Firebase Unity SDK (в частности, FirebaseAuth.unitypackage ) в свой проект Unity.

Обратите внимание, что добавление Firebase в ваш проект Unity включает в себя задачи как в консоли Firebase , так и в вашем открытом проекте Unity (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект Unity).

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

Создайте форму, которая позволит новым пользователям регистрироваться в вашей игре, используя свой адрес электронной почты и пароль. Когда пользователь заполняет форму, проверьте адрес электронной почты и пароль, предоставленные пользователем, а затем передайте их методу CreateUserWithEmailAndPasswordAsync :

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.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) {       DebugLog("Signed out " + user.UserId);     }     user = auth.CurrentUser;     if (signedIn) {       DebugLog("Signed in " + user.UserId);       displayName = user.DisplayName ?? "";       emailAddress = user.Email ?? "";       photoUrl = user.PhotoUrl ?? "";     }   } }  void OnDestroy() {   auth.StateChanged -= AuthStateChanged;   auth = null; } 

Следующие шаги

Узнайте, как добавить поддержку других поставщиков удостоверений и анонимных гостевых учетных записей: