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 jednej metody, 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 Firebase.

Dodawanie Firebase Authentication do aplikacji

Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
  2. Gdy pojawi się prośba, 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 projektu.
  6. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać 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 wybierasz techniki uwierzytelniania i dostawców, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą AuthenticationFirebase Security Rules lub tworzysz prototypy interfejsu logowania, praca lokalna bez wdrażania usług na żywo może być świetnym pomysłem.

Authentication Emulator 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 zabezpieczeń).

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

  1. Dodanie do konfiguracji testowej aplikacji wiersza kodu, który połączy ją z emulatorem.
  2. Uruchom firebase emulators:start w katalogu głównym projektu lokalnego.
  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 Firebase SDK

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];

Odsłuchaj stan uwierzytelniania

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

Dołącz detektor 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) {
      // ...
    }];

Następnie odłącz detektor 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 przy użyciu 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 przy użyciu 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ścia: