Mit Firebase Authentication können Sie Nutzern die Möglichkeit geben, sich mit einer oder mehreren Anmeldemethoden in Ihrer App anzumelden, z. B. mit E‑Mail-Adresse und Passwort oder mit föderierten Identitätsanbietern wie Google Log-in und Facebook Log-in. In diesem Tutorial erfahren Sie Firebase Authentication, wie Sie die Anmeldung mit E‑Mail-Adresse und Passwort in Ihre App einfügen.
App mit Firebase verbinden
- Firebase SDK installieren
- Fügen Sie Ihre App in der Firebase-Konsole Ihrem Firebase-Projekt hinzu.
Firebase Authentication in Ihre App einbinden
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 Firebase Authentication-Mediathek aus.
- Fügen Sie das Flag
-ObjCdem Abschnitt 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
(Optional) Prototypen erstellen und mit Firebase Local Emulator Suite testen
Bevor wir darauf eingehen, wie Ihre App Nutzer authentifiziert, stellen wir Ihnen eine Reihe von Tools vor, mit denen Sie die Authentication-Funktionalität prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie sich zwischen Authentifizierungstechniken und ‑anbietern entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mit Authentication und Firebase Security Rules ausprobieren oder Anmelde-UI-Designs prototypisieren, kann es eine gute Idee sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.
Ein Authentication-Emulator ist Teil der Local Emulator Suite. Dadurch kann Ihre App mit emulierten Datenbankinhalten und Konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) interagieren.
Die Verwendung des Authentication-Emulators umfasst nur wenige Schritte:
- Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
- Führen Sie
firebase emulators:startim Stammverzeichnis Ihres lokalen Projektverzeichnisses aus. - Verwenden Sie die Local Emulator Suite-Benutzeroberfläche für interaktive Prototypen oder die Authentication-Emulator-REST API für nicht interaktive Tests.
Eine detaillierte Anleitung finden Sie unter App mit dem Authentication-Emulator verbinden. Weitere Informationen finden Sie in der Einführung zu Local Emulator Suite.
Sehen wir uns nun an, wie Sie Nutzer authentifizieren.
Firebase SDK initialisieren
Importieren Sie zuerst das Firebase SDK in Ihren App-Delegate:
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
Initialisieren Sie dann in der application:didFinishLaunchingWithOptions:-Methode das FirebaseApp-Objekt:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Auf Authentifizierungsstatus warten
Hängen Sie für jede Ansicht Ihrer App, die Informationen zum angemeldeten Nutzer benötigt, einen Listener an das FIRAuth-Objekt an. Dieser Listener wird immer dann aufgerufen, wenn sich der Anmeldestatus des Nutzers ändert.
Hängen Sie den Listener in der Methode viewWillAppear des Ansichts-Controllers an:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Trennen Sie den Listener in der viewWillDisappear-Methode des Ansichts-Controllers:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Neue Nutzer registrieren
Erstellen Sie ein Formular, über das sich neue Nutzer mit ihrer E-Mail-Adresse und einem Passwort für Ihre App registrieren können. Wenn ein Nutzer das Formular ausfüllt, müssen Sie die von ihm angegebene E‑Mail-Adresse und das Passwort validieren und dann an die createUser-Methode übergeben:
Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Objective-C
[[FIRAuth auth] createUserWithEmail:email
password:password
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Bestehende Nutzer anmelden
Erstellen Sie ein Formular, über das 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 signIn auf:
Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
guard let strongSelf = self else { return }
// ...
}
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text
password:self->_passwordField.text
completion:^(FIRAuthDataResult * _Nullable authResult,
NSError * _Nullable error) {
// ...
}];
Nutzerinformationen abrufen
Nachdem sich ein Nutzer erfolgreich angemeldet hat, können Sie Informationen über ihn abrufen. Zum Beispiel in Ihrem Listener für den Authentifizierungsstatus:
Swift
if let user = user {
// 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 getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
Objective-C
if (user) {
// 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 getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
Nächste Schritte
So fügen Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzu: