Sie können die Firebase-Authentifizierung verwenden, um Benutzern die Anmeldung bei Ihrer App mit einer oder mehreren Anmeldemethoden zu ermöglichen, einschließlich der Anmeldung per E-Mail-Adresse und Passwort sowie mit föderierten Identitätsanbietern wie Google Sign-in und Facebook Login. Dieses Tutorial erleichtert Ihnen den Einstieg in die Firebase-Authentifizierung, indem es Ihnen zeigt, wie Sie Ihrer App eine E-Mail-Adresse und ein Anmeldekennwort hinzufügen.
Verbinden Sie Ihre App mit Firebase
- Installieren Sie das Firebase SDK .
- Fügen Sie in der Firebase-Konsole Ihre App zu Ihrem Firebase-Projekt hinzu.
Fügen Sie Ihrer App die Firebase-Authentifizierung hinzu
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
- Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Firebase Authentication-Bibliothek.
- Fügen Sie das Flag
-ObjC
zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu. - Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk.git
(Optional) Prototypen erstellen und mit der Firebase Local Emulator Suite testen
Bevor wir darüber sprechen, wie Ihre App Benutzer authentifiziert, stellen wir eine Reihe von Tools vor, mit denen Sie Authentifizierungsfunktionen prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie sich für Authentifizierungstechniken und -anbieter entscheiden, verschiedene Datenmodelle mit öffentlichen und privaten Daten mithilfe von Authentifizierungs- und Firebase-Sicherheitsregeln ausprobieren oder Prototypen für Anmelde-UI-Designs erstellen, kann die Möglichkeit, lokal zu arbeiten, ohne Live-Dienste bereitzustellen, eine gute Idee sein .
Ein Authentifizierungsemulator ist Teil der Local Emulator Suite, der es Ihrer App ermöglicht, mit emulierten Datenbankinhalten und -konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) zu interagieren.
Die Verwendung des Authentifizierungsemulators erfordert nur wenige Schritte:
- Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
- Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses
firebase emulators:start
. - Verwenden der Local Emulator Suite-Benutzeroberfläche für interaktives Prototyping oder der Authentifizierungsemulator-REST-API für nicht interaktive Tests.
Eine ausführliche Anleitung finden Sie unter „Verbinden Sie Ihre App mit dem Authentifizierungsemulator“ . Weitere Informationen finden Sie in der Einführung zur Local Emulator Suite .
Fahren wir nun mit der Authentifizierung von Benutzern fort.
Initialisieren Sie das Firebase SDK
Importieren Sie in Ihrem App-Delegierten zunächst das Firebase SDK:
Schnell
import FirebaseCore
Ziel c
@import FirebaseCore;
Initialisieren Sie dann in der application:didFinishLaunchingWithOptions:
das FirebaseApp
Objekt:
Schnell
// Use Firebase library to configure APIs
FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs
[FIRApp configure];
Achten Sie auf den Authentifizierungsstatus
Fügen Sie für jede Ansicht Ihrer App, die Informationen über den angemeldeten Benutzer benötigt, einen Listener an das FIRAuth
Objekt an. Dieser Listener wird immer dann aufgerufen, wenn sich der Anmeldestatus des Benutzers ändert.
Hängen Sie den Listener in die viewWillAppear
-Methode des View-Controllers ein:
Schnell
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Ziel c
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
Und trennen Sie den Listener in der viewWillDisappear
Methode des View-Controllers:
Schnell
Auth.auth().removeStateDidChangeListener(handle!)
Ziel c
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Melden Sie neue Benutzer an
Erstellen Sie ein Formular, das es neuen Benutzern ermöglicht, sich mit ihrer E-Mail-Adresse und einem Passwort bei Ihrer App zu registrieren. Wenn ein Benutzer das Formular ausfüllt, validieren Sie die vom Benutzer angegebene E-Mail-Adresse und das Kennwort und übergeben Sie sie dann an die Methode createUser
:
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) {
// ...
}];
Melden Sie bestehende Benutzer an
Erstellen Sie ein Formular, das es bestehenden Benutzern ermöglicht, sich mit ihrer E-Mail-Adresse und ihrem Passwort anzumelden. Wenn ein Benutzer das Formular ausfüllt, rufen Sie die signIn
Methode auf:
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) {
// ...
}];
Holen Sie sich Benutzerinformationen
Nachdem sich ein Benutzer erfolgreich angemeldet hat, können Sie Informationen über den Benutzer abrufen. Beispielsweise in Ihrem Authentifizierungsstatus-Listener :
Schnell
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 += " "
}
// ...
}
Ziel 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
Erfahren Sie, wie Sie Unterstützung für andere Identitätsanbieter und anonyme Gastkonten hinzufügen: