Authentifizieren Sie sich bei Firebase mithilfe passwortbasierter Konten auf Apple-Plattformen

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

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wählen Sie die Firebase Authentication-Bibliothek.
  5. Fügen Sie das Flag -ObjC zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu.
  6. Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.

Führen Sie als Nächstes einige Konfigurationsschritte durch:

  1. Wenn Sie Ihre App noch nicht mit Ihrem Firebase-Projekt verbunden haben, tun Sie dies über die Firebase-Konsole .
  2. E-Mail-/Passwort-Anmeldung aktivieren:
    1. Öffnen Sie in der Firebase-Konsole den Abschnitt „Auth“ .
    2. Aktivieren Sie auf der Registerkarte „Anmeldemethode“ die Anmeldemethode „E-Mail/Passwort“ und klicken Sie auf „Speichern“ .

Erstellen Sie ein passwortbasiertes Konto

Um ein neues Benutzerkonto mit einem Passwort zu erstellen, führen Sie die folgenden Schritte in der Anmeldeaktivität Ihrer App aus:

  1. Importieren Sie das FirebaseCore Modul in Ihr UIApplicationDelegate sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Schnell

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Ziel c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurieren Sie eine gemeinsam genutzte FirebaseApp Instanz in der application(_:didFinishLaunchingWithOptions:) Methode Ihres App-Delegierten:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Schnell

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. 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.
  5. Erstellen Sie ein neues Konto, indem Sie die E-Mail-Adresse und das Passwort des neuen Benutzers an createUser übergeben.

    Schnell

    Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
      // ...
    }

    Ziel c

    [[FIRAuth auth] createUserWithEmail:email
                               password:password
                             completion:^(FIRAuthDataResult * _Nullable authResult,
                                          NSError * _Nullable error) {
      // ...
    }];
    Wenn das neue Konto erfolgreich erstellt wurde, ist der Benutzer angemeldet und Sie können die Kontodaten des Benutzers aus dem Ergebnisobjekt abrufen, das an die Rückrufmethode übergeben wird.

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 Anmeldeaktivität Ihrer App wie folgt vor:

  1. Importieren Sie das FirebaseCore Modul in Ihr UIApplicationDelegate sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Schnell

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Ziel c

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurieren Sie eine gemeinsam genutzte FirebaseApp Instanz in der application(_:didFinishLaunchingWithOptions:) Methode Ihres App-Delegierten:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Schnell

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Ziel c

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          
  4. Wenn sich ein Benutzer bei Ihrer App anmeldet, übergeben Sie die E-Mail-Adresse und das Passwort des Benutzers an signIn .

    Schnell

    Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
      guard let strongSelf = self else { return }
      // ...
    }

    Ziel c

    [[FIRAuth auth] signInWithEmail:self->_emailField.text
                           password:self->_passwordField.text
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
      // ...
    }];
    Wenn sich der Benutzer erfolgreich anmeldet, können Sie die Kontodaten des Benutzers aus dem Ergebnisobjekt abrufen, das an die Rückrufmethode übergeben wird.

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 User Objekt abrufen. Siehe Benutzer verwalten .

  • 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.

Schnell

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}

Ziel c

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Möglicherweise möchten Sie auch Fehlerbehandlungscode für alle Authentifizierungsfehler hinzufügen. Siehe Fehler behandeln .