Mit Firebase über ein benutzerdefiniertes Authentifizierungssystem und Unity authentifizieren

Du kannst Firebase Authentication in ein benutzerdefiniertes Authentifizierungssystem einbinden, indem du Ihren Authentifizierungsserver so ändern, dass benutzerdefinierte signierte Token generiert werden, wenn ein Nutzer erfolgreich angemeldet ist. Deine App empfängt dieses Token und verwendet es zur Authentifizierung mit Firebase.

Hinweis

  1. Vor der Verwendung Firebase Authentication, sind folgende Schritte erforderlich:

    • Registrieren Sie Ihr Unity-Projekt bei Ihrem Firebase-Projekt.
    • Fügen Sie das Firebase Unity SDK hinzu (insbesondere FirebaseAuth.unitypackage) mit Ihrem Unity-Projekt verknüpfen.

    Ausführliche Anleitungen zu diesen Ersteinrichtungsschritten finden Sie unter Firebase zu Ihrer Unity hinzufügen

  2. Rufen Sie die Serverschlüssel Ihres Projekts ab:
    1. Rufen Sie in den Einstellungen Ihres Projekts die Seite Dienstkonten auf.
    2. Klicken Sie auf der Seite Dienstkonten unten im Abschnitt Firebase Admin SDK auf Neuen privaten Schlüssel generieren.
    3. Das öffentliche/private Schlüsselpaar des neuen Dienstkontos wird automatisch die auf Ihrem Computer gespeichert sind. Kopieren Sie diese Datei auf Ihren Authentifizierungsserver.

Mit Firebase authentifizieren

Die FirebaseAuth-Klasse ist das Gateway für alle API-Aufrufe. Sie kann über FirebaseAuth.DefaultInstance aufgerufen werden.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync mit dem Token von aufrufen Ihren Authentifizierungsserver.

  1. Wenn sich Nutzer in Ihrer App anmelden, werden ihre Anmeldedaten (z. B. Nutzername und Passwort) an Ihren Authentifizierungsserver gesendet. Dein Server prüft die Anmeldedaten und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
  2. Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync, um sich anzumelden Nutzer:
    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);
    });

Nächste Schritte

Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, d. h. mit dem Nutzernamen und Passwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter, mit denen sich der Nutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in allen Apps in Ihrem Projekt zu identifizieren, unabhängig davon, wie er sich anmeldet.

  • In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers über das Objekt Firebase.Auth.FirebaseUser abrufen:

    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;
    }
  • In Firebase Realtime Database und Cloud Storage Sicherheitsregeln können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen auth abrufen, und steuern, auf welche Daten ein Nutzer zugreifen kann.

Sie können Nutzern erlauben, sich mit Mehrfachauthentifizierung in Ihrer App anzumelden indem Sie die Anmeldedaten des Authentifizierungsanbieters mit einem eines bestehenden Nutzerkontos.

Rufen Sie auf, um einen Nutzer abzumelden. SignOut():

auth.SignOut();