Pierwsze kroki z Uwierzytelnianiem Firebase w Unity

Możesz używać uwierzytelniania Firebase, aby zezwalać użytkownikom na logowanie się w grze za pomocą co najmniej jednej metody, w tym logowania za pomocą adresu e-mail i hasła, oraz dostawców tożsamości sfederowanych, takich jak Logowanie przez Google i Logowanie przez Facebooka. Z tego samouczka dowiesz się, jak zacząć korzystać z uwierzytelniania Firebase, pokazując, jak dodać do gry logowanie za pomocą adresu e-mail i hasła.

Zanim zaczniesz

Zanim zaczniesz korzystać z Uwierzytelniania Firebase, musisz:

  • Zarejestruj projekt Unity i skonfiguruj go pod kątem korzystania z Firebase.

    • Jeśli Twój projekt w Unity korzysta już z Firebase, oznacza to, że został zarejestrowany i skonfigurowany pod kątem Firebase.

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

  • Dodaj pakiet SDK Firebase Unity (a konkretnie FirebaseAuth.unitypackage) do projektu Unity.

Pamiętaj, że dodanie Firebase do projektu Unity wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie Unity (np. musisz pobrać z konsoli pliki konfiguracyjne Firebase, a następnie przenieść je do projektu Unity).

Zarejestruj nowych użytkowników

Utwórz formularz, który pozwala nowym użytkownikom zarejestrować się w Twojej grze za pomocą ich adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź poprawność adresu e-mail i hasła podanych przez niego, 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);
});

Logowanie istniejących użytkowników

Utwórz formularz, który umożliwia dotychczasowym użytkownikom logowanie się za pomocą 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);
});

Ustawianie modułu obsługi zdarzenia zmiany stanu uwierzytelniania i pobieranie danych użytkownika

Aby odpowiadać na zdarzenia logowania i wylogowania, dołącz moduł obsługi zdarzeń do globalnego obiektu uwierzytelniania. Ten moduł obsługi jest wywoływany po każdej zmianie stanu logowania użytkownika. Ponieważ moduł obsługi działa dopiero po pełnym zainicjowaniu obiektu uwierzytelniania i po zakończeniu wywołań sieciowych, najlepszym sposobem na uzyskanie informacji o zalogowanym użytkowniku jest uzyskanie informacji o zalogowanym użytkowniku.

Zarejestruj moduł obsługi zdarzeń, korzystając z pola StateChanged obiektu FirebaseAuth. Gdy użytkownik się zaloguje, informacje o nim możesz uzyskać w module obsługi zdarzeń.

Gdy ten obiekt wywoła funkcję Destroy, automatycznie wywoła metodę OnDestroy. Usuń odwołania do obiektu Auth w pliku 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;
}

Dalsze kroki

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