Pierwsze kroki z Uwierzytelnianiem Firebase na platformach Apple

Możesz użyć Firebase Authentication, aby umożliwić użytkownikom logowanie się w aplikacji za pomocą co najmniej 1 metody logowania, w tym logowania przy użyciu adresu e-mail i hasła oraz dostawców tożsamości sfederowanej, takich jak Logowanie Google i logowanie przez Facebooka. Ten samouczek pomoże Ci zacząć korzystać z Firebase Authentication. Dowiesz się z niego, jak dodać do aplikacji logowanie za pomocą adresu e-mail i hasła.

Łączenie aplikacji z Firebase

  1. Zainstaluj pakiet SDK Firebase.
  2. W Firebasekonsoli dodaj aplikację do projektu w Firebase.

Dodawanie Firebase Authentication do aplikacji

Do instalowania zależności Firebase i zarządzania nimi używaj Swift Package Manager.

  1. W Xcode otwórz projekt aplikacji i kliknij File > Add Packages (Plik > Dodaj pakiety).
  2. Gdy pojawi się odpowiedni komunikat, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Firebase Authentication.
  5. Dodaj flagę -ObjC do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji elementu docelowego.
  6. Po zakończeniu Xcode automatycznie zacznie przetwarzać i pobierać zależności w tle.

(Opcjonalnie) Tworzenie prototypów i testowanie za pomocą Firebase Local Emulator Suite

Zanim omówimy sposób uwierzytelniania użytkowników w aplikacji, przedstawimy zestaw narzędzi, których możesz użyć do prototypowania i testowania Authenticationfunkcji:Firebase Local Emulator Suite Jeśli zastanawiasz się nad wyborem technik uwierzytelniania i dostawców, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą Authentication i Firebase Security Rules lub tworzysz prototypy interfejsu logowania, praca lokalna bez wdrażania usług na żywo może być świetnym pomysłem.

AuthenticationEmulator jest częścią Local Emulator Suite, która umożliwia aplikacji interakcję z emulowaną zawartością bazy danych i konfiguracją, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami bezpieczeństwa).

Korzystanie z emulatora Authentication wymaga wykonania tylko kilku czynności:

  1. Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć ją z emulatorem.
  2. z katalogu głównego projektu lokalnego, uruchamiając firebase emulators:start.
  3. Korzystając z interfejsu Local Emulator Suite do interaktywnego prototypowania lub interfejsu API REST emulatora Authentication do testowania nieinteraktywnego.

Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem Authentication. Więcej informacji znajdziesz we Local Emulator Suitewprowadzeniu.

Teraz przejdźmy do uwierzytelniania użytkowników.

Inicjowanie pakietu SDK Firebase

W delegacie aplikacji najpierw zaimportuj pakiet SDK Firebase:

Swift

import FirebaseCore

Objective-C

@import FirebaseCore;

Następnie w metodzie application:didFinishLaunchingWithOptions: zainicjuj obiekt FirebaseApp:

Swift

// Use Firebase library to configure APIs
FirebaseApp.configure()

Objective-C

// Use Firebase library to configure APIs
[FIRApp configure];

Nasłuchiwanie stanu uwierzytelniania

Do każdego widoku aplikacji, który wymaga informacji o zalogowanym użytkowniku, dołącz detektor do obiektu FIRAuth. Ten odbiornik jest wywoływany za każdym razem, gdy zmienia się stan logowania użytkownika.

Dołącz słuchacza w metodzie viewWillAppear kontrolera widoku:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Odłącz słuchacza w metodzie viewWillDisappear kontrolera widoku:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Rejestrowanie nowych użytkowników

Utwórz formularz, który umożliwi nowym użytkownikom rejestrację w aplikacji za pomocą adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź adres e-mail i hasło podane przez użytkownika, a następnie przekaż je do metody createUser:

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) {
  // ...
}];

Logowanie dotychczasowych użytkowników

Utwórz formularz, który umożliwi zalogowanie się obecnym użytkownikom za pomocą adresu e-mail i hasła. Gdy użytkownik wypełni formularz, wywołaj metodę signIn:

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) {
  // ...
}];

Pobieranie informacji o użytkowniku

Po zalogowaniu się użytkownika możesz uzyskać informacje o nim. Na przykład w detektorze stanu uwierzytelniania:

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;
  // ...
}

Dalsze kroki

Dowiedz się, jak dodać obsługę innych dostawców tożsamości i anonimowych kont gości: