Uwierzytelniaj za pomocą Firebase z użyciem niestandardowego systemu uwierzytelniania i Unity

Uwierzytelnianie Firebase możesz zintegrować z niestandardowym systemem uwierzytelniania, modyfikując serwer uwierzytelniania tak, aby generował niestandardowe podpisane tokeny, gdy użytkownik się zaloguje. Aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.

Zanim zaczniesz

  1. Zanim zaczniesz korzystać z uwierzytelniania Firebase, musisz:

    • Zarejestruj projekt Unity w projekcie Firebase.
    • Dodaj pakiet SDK Firebase Unity (a konkretnie FirebaseAuth.unitypackage) do projektu Unity.

    Szczegółowe instrukcje dotyczące początkowej konfiguracji znajdziesz w artykule Dodawanie Firebase do projektu Unity.

  2. Pobierz klucze serwera projektu:
    1. Otwórz stronę Konta usługi w ustawieniach projektu.
    2. Kliknij Wygeneruj nowy klucz prywatny u dołu sekcji Pakiet SDK Firebase Admin na stronie Konta usługi.
    3. Para kluczy publiczny/prywatny nowego konta usługi zostanie automatycznie zapisana na Twoim komputerze. Skopiuj ten plik na serwer uwierzytelniania.

Uwierzytelnij za pomocą Firebase

Klasa FirebaseAuth jest bramą dla wszystkich wywołań interfejsu API. Jest dostępna przez FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Wywołaj Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync przy użyciu tokena z serwera uwierzytelniania.

  1. Gdy użytkownicy logują się w Twojej aplikacji, wyślij swoje dane logowania (np. nazwę użytkownika i hasło) na serwer uwierzytelniania. Serwer sprawdza dane logowania i zwraca token niestandardowy, jeśli są prawidłowe.
  2. Po otrzymaniu niestandardowego tokena z serwera uwierzytelniania przekaż go do Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync, aby zalogować użytkownika:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync 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);
    });
    

Dalsze kroki

Gdy użytkownik loguje się po raz pierwszy, tworzone jest nowe konto użytkownika, które jest łączone z danymi logowania (nazwa użytkownika i hasło, numer telefonu lub informacje o dostawcy uwierzytelniania). Nowe konto jest przechowywane w ramach Twojego projektu Firebase i może być używane do identyfikowania użytkowników we wszystkich aplikacjach w Twoim projekcie niezależnie od tego, jak się on loguje.

  • W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu Firebase.Auth.FirebaseUser:

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • W regułach zabezpieczeń Bazy danych czasu rzeczywistego Firebase i Cloud Storage możesz pobrać ze zmiennej auth unikalny identyfikator użytkownika zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.

Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu różnych dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.

Aby wylogować użytkownika, wywołaj SignOut():

auth.SignOut();