Zacznij korzystać z uwierzytelniania Firebase w Unity

Możesz użyć uwierzytelniania Firebase, aby umożliwić użytkownikom logowanie się do Twojej gry przy użyciu jednej lub kilku metod logowania, w tym logowania za pomocą adresu e-mail i hasła, oraz federacyjnych dostawców tożsamości, takich jak logowanie przez Google i logowanie na Facebooku. Ten samouczek pomoże Ci rozpocząć korzystanie z uwierzytelniania Firebase, pokazując, jak dodać adres e-mail i hasło logowania do gry.

Zanim zaczniesz

Aby móc korzystać z uwierzytelniania Firebase , musisz:

  • Zarejestruj swój projekt Unity i skonfiguruj go do korzystania z Firebase.

    • Jeśli Twój projekt Unity korzysta już z Firebase, oznacza to, że jest już zarejestrowany i skonfigurowany dla Firebase.

    • Jeśli nie masz projektu Unity, możesz pobrać przykładową aplikację .

  • Dodaj zestaw Firebase Unity SDK (konkretnie FirebaseAuth.unitypackage ) do swojego projektu Unity.

Pamiętaj, że dodanie Firebase do projektu Unity obejmuje zadania zarówno w konsoli Firebase , jak i w otwartym projekcie Unity (na przykład pobierasz pliki konfiguracyjne Firebase z konsoli, a następnie przenosisz je do projektu Unity).

Zarejestruj nowych użytkowników

Utwórz formularz, który pozwoli nowym użytkownikom zarejestrować się w Twojej grze przy użyciu adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź adres e-mail i hasło podane przez użytkownika, a następnie przekaż je do metody 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);
});

Zaloguj się istniejących użytkowników

Utwórz formularz, który umożliwia istniejącym użytkownikom logowanie się przy użyciu adresu e-mail i hasła. Gdy użytkownik wypełni formularz, wywołaj metodę 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);
});

Ustaw obsługę zdarzeń zmiany stanu uwierzytelniania i pobierz dane użytkownika

Aby odpowiedzieć na zdarzenia logowania i wylogowania, dołącz procedurę obsługi zdarzeń do globalnego obiektu uwierzytelniania. Ta procedura obsługi jest wywoływana za każdym razem, gdy zmienia się stan logowania użytkownika. Ponieważ procedura obsługi działa dopiero po pełnym zainicjowaniu obiektu uwierzytelniania i po zakończeniu wszelkich wywołań sieciowych, jest to najlepsze miejsce do uzyskania informacji o zalogowanym użytkowniku.

Zarejestruj procedurę obsługi zdarzeń przy użyciu pola FirebaseAuth obiektu StateChanged . Gdy użytkownik pomyślnie się zaloguje, możesz uzyskać informacje o nim w programie obsługi zdarzeń.

Wreszcie, gdy ten obiekt ma Destroy , automatycznie wywoła OnDestroy . Wyczyść odwołania do obiektu Auth w 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;
}

Następne kroki

Dowiedz się, jak dodać obsługę innych dostawców tożsamości i anonimowych kont gości: