Rozpocznij pracę z uwierzytelnianiem Firebase w Unity

Możesz użyć uwierzytelniania Firebase, aby umożliwić użytkownikom logowanie się do Twojej gry przy użyciu jednej lub większej liczby 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 przez Facebooka. W tym samouczku zaczniesz korzystać z uwierzytelniania Firebase, pokazując, jak dodać adres e-mail i hasło logowania do swojej gry.

Zanim zaczniesz

Zanim będziesz mógł skorzystać 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 pakiet SDK Firebase Unity (w szczególności 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 umożliwi nowym użytkownikom zarejestrowanie się w Twojej grze przy użyciu adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź poprawność adresu e-mail i hasła podanego 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 istniejących użytkowników

Utwórz formularz, który umożliwi istniejącym użytkownikom zalogowanie 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 procedurę obsługi zdarzeń zmiany stanu uwierzytelniania i uzyskaj dane użytkownika

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

Zarejestruj procedurę obsługi zdarzeń, korzystając z pola StateChanged obiektu FirebaseAuth . Gdy użytkownik pomyślnie się zaloguje, możesz uzyskać informacje o użytkowniku w procedurze obsługi zdarzeń.

Wreszcie, gdy na tym obiekcie zostanie wywołana Destroy , automatycznie wywoła OnDestroy . Wyczyść odniesienia 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: