Erste Schritte mit der Firebase-Authentifizierung in Unity

Mit Firebase Authentication können Sie Nutzern die Möglichkeit geben, sich mit einer oder mehreren Anmeldemethoden in Ihrem Spiel anzumelden, z. B. mit einer E-Mail-Adresse und einem Passwort oder mit föderierten Identitätsanbietern wie Google Log-in und Facebook Log-in. In diesem Tutorial erfahren Sie, wie Sie die Anmeldung mit E-Mail-Adresse und Passwort in Ihr Spiel einfügen.Firebase Authentication

Hinweis

Bevor Sie Firebase Authentication verwenden können, müssen Sie Folgendes tun:

  • Registrieren Sie Ihr Unity-Projekt und konfigurieren Sie es für die Verwendung von Firebase.

    • Wenn Ihr Unity-Projekt bereits Firebase verwendet, ist es bereits für Firebase registriert und konfiguriert.

    • Wenn Sie kein Unity-Projekt haben, können Sie eine Beispiel-App herunterladen.

  • Fügen Sie Ihrem Unity-Projekt das Firebase Unity SDK (insbesondere FirebaseAuth.unitypackage) hinzu.

Das Hinzufügen von Firebase zu Ihrem Unity-Projekt umfasst Aufgaben sowohl in der Firebase-Konsole als auch in Ihrem geöffneten Unity-Projekt. Sie laden beispielsweise Firebase-Konfigurationsdateien aus der Konsole herunter und verschieben sie dann in Ihr Unity-Projekt.

Neue Nutzer registrieren

Erstellen Sie ein Formular, mit dem sich neue Nutzer mit ihrer E-Mail-Adresse und einem Passwort für Ihr Spiel registrieren können. Wenn ein Nutzer das Formular ausfüllt, validieren Sie die vom Nutzer angegebene E-Mail-Adresse und das Passwort und übergeben Sie sie dann an die Methode 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);
});

Vorhandene Nutzer anmelden

Erstellen Sie ein Formular, mit dem sich bestehende Nutzer mit ihrer E-Mail-Adresse und ihrem Passwort anmelden können. Wenn ein Nutzer das Formular ausfüllt, rufen Sie die Methode SignInWithEmailAndPasswordAsync auf:

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);
});

Event-Handler für Änderungen des Authentifizierungsstatus festlegen und Nutzerdaten abrufen

Um auf Anmelde- und Abmeldeereignisse zu reagieren, hängen Sie einen Event-Handler an das globale Authentifizierungsobjekt an. Dieser Handler wird immer dann aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert. Da der Handler erst ausgeführt wird, nachdem das Authentifizierungsobjekt vollständig initialisiert und alle Netzwerkaufrufe abgeschlossen wurden, ist er der beste Ort, um Informationen zum angemeldeten Nutzer abzurufen.

Registrieren Sie den Event-Handler mit dem Feld StateChanged des FirebaseAuth-Objekts. Wenn sich ein Nutzer erfolgreich anmeldet, können Sie im Ereignishandler Informationen über den Nutzer abrufen.

Wenn für dieses Objekt Destroy aufgerufen wird, wird automatisch OnDestroy aufgerufen. Bereinigen Sie die Referenzen des Auth-Objekts in 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;
}

Nächste Schritte

So fügen Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzu: