Pierwsze kroki z Uwierzytelnianiem Firebase na platformach Apple

Możesz użyć Firebase Authentication, aby umożliwić użytkownikom logowanie się w Twojej aplikacji za pomocą co najmniej 1 metody logowania, w tym adresu e-mail i hasła, oraz federacyjnych dostawców tożsamości, takich jak Logowanie przez Google i Logowanie przez Facebooka. Z tego samouczka dowiesz się, jak zacząć korzystać z Firebase Authentication dodając do aplikacji logowanie za pomocą adresu e-mail i hasła.

Łączenie aplikacji z Firebase

  1. Zainstaluj pakiet SDK Firebase.
  2. W Firebase konsoli dodaj swoją aplikację do projektu w 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 celu.
  6. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje zależności w tle.

(Opcjonalnie) Prototypowanie i testowanie za pomocą Firebase Local Emulator Suite

Zanim omówimy, jak Twoja aplikacja uwierzytelnia użytkowników, przedstawimy zestaw narzędzi, których możesz używać do prototypowania i testowania Authentication funkcjonalności: Firebase Local Emulator Suite. Jeśli zastanawiasz się nad różnymi technikami i dostawcami uwierzytelniania, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą Authentication i Firebase Security Rules, lub prototypujesz projekty interfejsu logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być dobrym rozwiązaniem.

Emulator Authentication jest częścią pakietu Local Emulator Suite, który 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 kilku czynności:

  1. Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. Uruchomienie polecenia firebase emulators:start w katalogu głównym projektu lokalnego.
  3. Używanie interfejsu Local Emulator Suite do interaktywnego prototypowania lub interfejsu API REST Authentication emulatora do testowania nieinteraktywnego.

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

Teraz omówimy, jak uwierzytelniać 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

W przypadku każdej z widoków aplikacji, które wymagają 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 odbiornik 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 odbiornik 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ź podany przez niego adres e-mail i hasło, 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 istniejących użytkowników

Utwórz formularz, który umożliwi istniejącym użytkownikom logowanie się 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

Gdy użytkownik się zaloguje, możesz uzyskać informacje o nim. Na przykład w odbiorniku 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: