Beginnen Sie mit der Firebase-Authentifizierung auf Apple-Plattformen

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

  1. Installieren Sie das Firebase SDK .
  2. 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.

  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.

(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:

  1. Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
  2. Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses firebase emulators:start .
  3. 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: