Uwierzytelniaj się w Firebase za pomocą niestandardowego systemu uwierzytelniania i Unity

Uwierzytelnianie Firebase możesz zintegrować z niestandardowym systemem uwierzytelniania, modyfikując serwer uwierzytelniania tak, aby po pomyślnym zalogowaniu użytkownika generował niestandardowe podpisane tokeny. Twoja aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.

Zanim zaczniesz

  1. Przed rozpoczęciem korzystania z uwierzytelniania Firebase , trzeba:

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

    Znajdź szczegółowe instrukcje dotyczące tych początkowych etapach konfiguracji w Dodaj Firebase do projektu Unity .

  2. Uzyskaj klucze serwera projektu:
    1. Przejdź do kont usług strony w ustawieniach projektu.
    2. Kliknij Utwórz nowy klucz prywatny na dole sekcji Firebase Admin SDK strony kont usług.
    3. Para kluczy publiczny/prywatny nowego konta usługi jest automatycznie zapisywana na komputerze. Skopiuj ten plik na swój serwer uwierzytelniania.

Uwierzytelnij się w Firebase

FirebaseAuth klasa jest bramą do wszystkich wywołań API. Jest accessable przez FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Zadzwoń Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync z tokenem z serwera uwierzytelniania.

  1. Gdy użytkownicy logują się do Twojej aplikacji, wyślij ich dane logowania (na przykład nazwę użytkownika i hasło) na serwer uwierzytelniania. Twoje serwer sprawdza poświadczenia i zwraca niestandardowe żeton , jeśli są one ważne.
  2. Po pojawieniu się zwyczaj token z serwerem uwierzytelniania, przekazać go do Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync zalogowanie się 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.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Następne kroki

Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i połączone z poświadczeniami — czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania — przy użyciu których użytkownik jest zalogowany. To nowe konto jest przechowywane jako część projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się on loguje.

  • W aplikacjach, można 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 bazie danych Firebase Realtime i Cloud Storage zasad bezpieczeństwa , można uzyskać podpisanego w unikalnym identyfikatorem użytkownika użytkownika z auth zmiennej i użyć go do kontroli, jakie dane dostępu może użytkownik.

Można zezwolić użytkownikom na logowanie się do aplikacji przy użyciu wielu dostawców uwierzytelniania przez łączenie auth poświadczenia dostawcy do istniejącego konta użytkownika.

Aby wylogować użytkownika, zadzwoń SignOut() :

auth.SignOut();