Sie können Firebase Authentication in ein benutzerdefiniertes Authentifizierungssystem einbinden, indem Sie Ihren Authentifizierungsserver so ändern, dass er benutzerdefinierte signierte Tokens erzeugt, wenn sich ein Nutzer erfolgreich anmeldet. Ihre App empfängt dieses Token und verwendet es zur Authentifizierung bei Firebase.
Hinweis
- Erstellen Sie ein Firebase-Projekt und registrieren Sie Ihre App, falls Sie das noch nicht getan haben.
-
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Add Packages (Datei > Pakete hinzufügen).
- Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Bibliothek Firebase Authentication aus.
- Fügen Sie das Flag
-ObjCim Bereich Other Linker Flags (Andere Linker-Flags) der Build-Einstellungen Ihres Ziels hinzu. - Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.
https://github.com/firebase/firebase-ios-sdk.git
- Rufen Sie die Serverschlüssel Ihres Projekts ab:
-
Rufen Sie in der Firebase-Konsole die Seite
Einstellungen > Tab Dienstkonten auf. - Klicken Sie unten im Abschnitt Firebase Admin SDK auf Neuen privaten Schlüssel generieren.
- Das öffentliche/private Schlüsselpaar des neuen Dienstkontos wird automatisch auf Ihrem Computer gespeichert. Kopieren Sie diese Datei auf Ihren Authentifizierungsserver.
-
Rufen Sie in der Firebase-Konsole die Seite
Mit Firebase authentifizieren
- Importieren Sie das
FirebaseCore-Modul in IhreUIApplicationDelegatesowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. Beispiel für die Verwendung von Cloud Firestore und Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie in der Methode
application(_:didFinishLaunchingWithOptions:)des App-Delegats eine freigegebeneFirebaseApp-Instanz:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie ein App-Delegat erstellen und es über
UIApplicationDelegateAdaptoroderNSApplicationDelegateAdaptoran IhrApp-Struct anhängen. Außerdem müssen Sie das Swizzling des App-Delegaten deaktivieren. Weitere Informationen finden Sie in der SwiftUI-Anleitung.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Wenn sich Nutzer in Ihrer App anmelden, senden Sie ihre Anmeldedaten (z. B. Nutzername und Passwort) an Ihren Authentifizierungsserver. Ihr Server prüft die Anmeldedaten und gibt ein benutzerdefiniertes Token zurück, wenn sie gültig sind.
- Nachdem Sie das benutzerdefinierte Token von Ihrem Authentifizierungsserver erhalten haben, übergeben Sie es an
signInWithCustomToken, um den Nutzer anzumelden:Swift
Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in // ... }
Objective-C
[[FIRAuth auth] signInWithCustomToken:customToken completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Nächste Schritte
Nachdem sich ein Nutzer zum ersten Mal angemeldet hat, wird ein neues Nutzerkonto erstellt und mit den Anmeldedaten verknüpft, mit denen sich der Nutzer angemeldet hat, also mit dem Nutzernamen und dem Passwort, der Telefonnummer oder den Informationen des Authentifizierungsanbieters. Dieses neue Konto wird als Teil Ihres Firebase-Projekts gespeichert und kann verwendet werden, um einen Nutzer in jeder App in Ihrem Projekt zu identifizieren, unabhängig davon, wie sich der Nutzer anmeldet.
-
In Ihren Apps können Sie die grundlegenden Profilinformationen des Nutzers aus dem Objekt
Userabrufen. Weitere Informationen finden Sie unter Nutzer verwalten. In Ihren Sicherheitsregeln für Firebase Realtime Database und Cloud Storage können Sie die eindeutige Nutzer-ID des angemeldeten Nutzers aus der Variablen
authabrufen und damit steuern, auf welche Daten ein Nutzer zugreifen kann.
Sie können Nutzern erlauben, sich mit mehreren Authentifizierungsanbietern in Ihrer App anzumelden, indem Sie Anmeldedaten des Authentifizierungsanbieters mit einem vorhandenen Nutzerkonto verknüpfen.
Wenn Sie einen Nutzer abmelden möchten, rufen Sie
signOut: auf.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Sie können auch Fehlerbehandlungscode für alle Authentifizierungsfehler hinzufügen. Weitere Informationen finden Sie unter Fehler verarbeiten.