Authentifizieren Sie sich bei Firebase über passwortbasierte Konten mit Unity

Sie können die Firebase-Authentifizierung verwenden, um Ihren Benutzern die Authentifizierung bei Firebase mit ihren E-Mail-Adressen und Passwörtern zu ermöglichen und um die passwortbasierten Konten Ihrer App zu verwalten.

Bevor Sie beginnen

Bevor Sie die Firebase-Authentifizierung 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 das Firebase Unity SDK (insbesondere FirebaseAuth.unitypackage ) zu Ihrem Unity-Projekt hinzu.

Beachten Sie, dass das Hinzufügen von Firebase zu Ihrem Unity-Projekt Aufgaben sowohl in der Firebase-Konsole als auch in Ihrem offenen Unity-Projekt erfordert (Sie laden beispielsweise Firebase-Konfigurationsdateien von der Konsole herunter und verschieben sie dann in Ihr Unity-Projekt).

Greifen Sie auf die Firebase.Auth.FirebaseAuth -Klasse zu

Die FirebaseAuth Klasse ist das Gateway für alle API-Aufrufe. Der Zugriff erfolgt über FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Erstellen Sie ein passwortbasiertes Konto

Um ein neues Benutzerkonto mit Passwort zu erstellen, führen Sie die folgenden Schritte im Anmeldecode Ihrer App aus:

  1. Wenn sich ein neuer Benutzer über das Anmeldeformular Ihrer App anmeldet, führen Sie alle für Ihre App erforderlichen Validierungsschritte für das neue Konto aus, z. B. die Überprüfung, ob das Kennwort des neuen Kontos korrekt eingegeben wurde und Ihren Komplexitätsanforderungen entspricht.
  2. Erstellen Sie ein neues Konto, indem Sie die E-Mail-Adresse und das Passwort des neuen Benutzers an FirebaseAuth.CreateUserWithEmailAndPassword übergeben:
    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);
    });
    

Melden Sie einen Benutzer mit einer E-Mail-Adresse und einem Passwort an

Die Schritte zum Anmelden eines Benutzers mit einem Passwort ähneln den Schritten zum Erstellen eines neuen Kontos. Gehen Sie in der Anmeldefunktion Ihrer App wie folgt vor:

  1. Wenn sich ein Benutzer bei Ihrer App anmeldet, übergeben Sie die E-Mail-Adresse und das Passwort des Benutzers an FirebaseAuth.SignInWithEmailAndPassword :
    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);
    });
    
  2. Sie können die Anmeldeinformationen auch wie bei den anderen Workflows erstellen und sich anmelden:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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);
    });
    

Empfohlen: Aktivieren Sie den E-Mail-Aufzählungsschutz

Einige Firebase-Authentifizierungsmethoden, die E-Mail-Adressen als Parameter verwenden, lösen bestimmte Fehler aus, wenn die E-Mail-Adresse nicht registriert ist, obwohl sie registriert werden muss (z. B. wenn Sie sich mit einer E-Mail-Adresse und einem Passwort anmelden), oder wenn sie registriert ist, wenn sie nicht verwendet werden muss (z. B. beim Ändern der E-Mail-Adresse eines Benutzers). Dies kann zwar hilfreich sein, um Benutzern spezifische Abhilfemaßnahmen vorzuschlagen, es kann jedoch auch von böswilligen Akteuren missbraucht werden, um die von Ihren Benutzern registrierten E-Mail-Adressen zu ermitteln.

Um dieses Risiko zu mindern, empfehlen wir Ihnen, den E-Mail-Aufzählungsschutz für Ihr Projekt mit dem Google Cloud-Tool gcloud zu aktivieren. Beachten Sie, dass sich durch die Aktivierung dieser Funktion das Fehlerberichtsverhalten von Firebase Authentication ändert: Stellen Sie sicher, dass Ihre App nicht auf spezifischere Fehler angewiesen ist.

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen – also dem Benutzernamen und dem Kennwort, der Telefonnummer oder den Informationen zum Authentifizierungsanbieter – verknüpft, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann zur Identifizierung eines Benutzers in jeder App in Ihrem Projekt verwendet werden, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Apps können Sie die grundlegenden Profilinformationen des Benutzers aus dem Firebase.Auth.FirebaseUser -Objekt 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 Ihren Firebase-Echtzeitdatenbank- und Cloud-Speicher- Sicherheitsregeln können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der auth abrufen und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern die Anmeldung bei Ihrer App mit mehreren Authentifizierungsanbietern ermöglichen, indem Sie die Anmeldeinformationen des Authentifizierungsanbieters mit einem vorhandenen Benutzerkonto verknüpfen.

Um einen Benutzer abzumelden, rufen Sie SignOut() auf:

auth.SignOut();