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

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

Zanim zaczniesz

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

    • zarejestrować projekt w Unity w projekcie w Firebase;
    • dodać pakiet SDK Firebase Unity (w szczególności, FirebaseAuth.unitypackage) do projektu w Unity.

    Szczegółowe instrukcje dotyczące tych wstępnych kroków znajdziesz w artykule Dodawanie Firebase do projektu w Unity.

  2. Pobierz klucze serwera projektu:
    1. W konsoli Firebase otwórz ustawienia Ustawienia > Konta usługi.
    2. U dołu sekcji pakiet Firebase Admin SDK kliknij Wygeneruj nowy klucz prywatny.
    3. Para kluczy publicznego i prywatnego nowego konta usługi zostanie automatycznie zapisana na Twoim komputerze. Skopiuj ten plik na serwer uwierzytelniania.

Uwierzytelnianie w Firebase

Klasa FirebaseAuth to brama do wszystkich wywołań interfejsu API. Jest ona dostępna przez FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Wywołaj Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync z tokenem z serwera uwierzytelniania.

  1. Gdy użytkownicy logują się w Twojej aplikacji, wyślij ich dane logowania (np. nazwę użytkownika i hasło) na serwer uwierzytelniania. Serwer sprawdza dane logowania i zwraca niestandardowy token , jeśli są one prawidłowe.
  2. Gdy otrzymasz niestandardowy token 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 zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika, które zostanie połączone z danymi logowania – nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania. To nowe konto jest przechowywane jako część projektu w Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od sposobu logowania.

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

    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 bezpieczeństwa Firebase Realtime Database i Cloud Storage Bazy danych czasu rzeczywistego Firebase i Cloud Storage, możesz uzyskać unikalny identyfikator zalogowanego użytkownika z zmiennej auth, i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.

Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania przez połączenie danych logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.

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

auth.SignOut();