Catch up on highlights from Firebase at Google I/O 2023. Learn more

Authentifizieren Sie sich bei Firebase auf Apple-Plattformen mithilfe eines benutzerdefinierten Authentifizierungssystems

Sie können die Firebase-Authentifizierung in ein benutzerdefiniertes Authentifizierungssystem integrieren, indem Sie Ihren Authentifizierungsserver so ändern, dass benutzerdefinierte signierte Token erstellt werden, wenn sich ein Benutzer erfolgreich anmeldet. Ihre App empfängt dieses Token und verwendet es zur Authentifizierung bei Firebase.

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-Plattform-SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wählen Sie die Firebase-Authentifizierungsbibliothek aus.
  5. Wenn Sie fertig sind, beginnt Xcode automatisch mit dem Auflösen und Herunterladen Ihrer Abhängigkeiten im Hintergrund.

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

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

Authentifizieren Sie sich mit Firebase

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

    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 freigegebene FirebaseApp Instanz in der Methode application(_:didFinishLaunchingWithOptions:) Ihres App-Delegaten:

    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 anfügen. Sie müssen auch das Swizzling von App-Delegaten 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 Benutzer bei Ihrer App anmelden, senden Sie ihre Anmeldeinformationen (z. B. ihren Benutzernamen und ihr Kennwort) an Ihren Authentifizierungsserver. Ihr Server überprüft die Anmeldeinformationen und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
  5. Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an signInWithCustomToken , um den Benutzer anzumelden:

    Schnell

    Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in
      // ...
    }

    Ziel c

    [[FIRAuth auth] signInWithCustomToken:customToken
                               completion:^(FIRAuthDataResult * _Nullable authResult,
                                            NSError * _Nullable error) {
      // ...
    }];

Nächste Schritte

Nachdem sich ein Benutzer zum ersten Mal angemeldet hat, wird ein neues Benutzerkonto erstellt und mit den Anmeldeinformationen verknüpft – d. h. dem Benutzernamen und Kennwort, der Telefonnummer oder den Authentifizierungsanbieterinformationen –, mit denen sich der Benutzer angemeldet hat. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Benutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Benutzer anmeldet.

  • In Ihren Apps können Sie die grundlegenden Profilinformationen des Benutzers aus dem User abrufen. Siehe Benutzer verwalten .

  • In Ihren Sicherheitsregeln für die Firebase-Echtzeitdatenbank und den Cloud-Speicher können Sie die eindeutige Benutzer-ID des angemeldeten Benutzers aus der Variablen auth abrufen und damit steuern, auf welche Daten ein Benutzer zugreifen kann.

Sie können Benutzern erlauben, sich mit mehreren Authentifizierungsanbietern bei Ihrer App anzumelden, 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 Behandlung von Fehlern .