Pierwsze kroki z Uwierzytelnianiem Firebase na platformach Apple

Możesz używać uwierzytelniania Firebase, aby umożliwić użytkownikom logowanie się w Twojej aplikacji za pomocą co najmniej 1 metody logowania, w tym logowania za pomocą adresu e-mail i hasła, oraz usług dostawców tożsamości sfederowanych, takich jak Logowanie przez Google i Logowanie przez Facebooka. Z tego samouczka dowiesz się, jak dodać do aplikacji uwierzytelnianie Firebase za pomocą adresu e-mail i hasła.

Łączenie aplikacji z Firebase

  1. Zainstaluj pakiet SDK Firebase.
  2. W konsoli Firebase dodaj swoją aplikację do projektu Firebase.

Dodaj Uwierzytelnianie Firebase do swojej aplikacji

Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.

  1. Po otwarciu projektu aplikacji przejdź w Xcode do File > Add Packages (Plik > Dodaj pakiety).
  2. Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę uwierzytelniania Firebase.
  5. Dodaj flagę -ObjC do sekcji Inne flagi łączące w ustawieniach kompilacji celu.
  6. Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie zależności w tle.

(Opcjonalnie) Prototypowanie i testowanie w Pakiecie emulatorów lokalnych Firebase

Zanim przejdziemy do omówienia sposobu uwierzytelniania użytkowników w Twojej aplikacji, przedstawimy zestaw emulatorów lokalnych Firebase, którego możesz użyć do prototypowania i testowania funkcji uwierzytelniania. Dobrym pomysłem może być wypróbowywanie różnych modeli danych z danymi publicznymi i prywatnymi za pomocą uwierzytelniania oraz reguł zabezpieczeń Firebase albo prototypowanie projektów interfejsu logowania. Dobrym pomysłem może być praca lokalnie bez wdrażania aktywnych usług.

Emulator uwierzytelniania jest częścią Pakietu emulatorów lokalnych, który umożliwia aplikacji interakcję z treścią i konfiguracją emulowanej bazy danych, a także opcjonalnie emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).

Aby zacząć korzystać z emulatora uwierzytelniania, wystarczy kilka kroków:

  1. Dodajesz wiersz kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. Uruchomienie firebase emulators:start w katalogu głównym projektu lokalnego.
  3. Używanie interfejsu użytkownika pakietu emulatorów lokalnych do interaktywnego prototypowania lub interfejsu API REST emulatora uwierzytelniania do testów nieinteraktywnych.

Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem uwierzytelniania. Więcej informacji znajdziesz we wprowadzeniu do Pakietu emulatorów lokalnych.

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

Inicjowanie pakietu SDK Firebase

Najpierw zaimportuj pakiet SDK Firebase na koncie delegata aplikacji:

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

Wykrywaj stan uwierzytelniania

W każdym widoku aplikacji, który wymaga informacji o zalogowanym użytkowniku, dołącz detektor do obiektu FIRAuth. Ten detektor jest wywoływany po każdej zmianie stanu logowania użytkownika.

Podłącz detektor w metodzie viewWillAppear kontrolera widoku danych:

Swift

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

Objective-C

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

I odłącz detektor w metodzie viewWillDisappear kontrolera widoku:

Swift

Auth.auth().removeStateDidChangeListener(handle!)

Objective-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Zarejestruj nowych użytkowników

Utwórz formularz, który umożliwia nowym użytkownikom rejestrowanie się w aplikacji za pomocą ich adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź poprawność adresu e-mail i hasła podanych przez niego, 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żliwia dotychczasowym 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) {
  // ...
}];

Uzyskiwanie informacji o użytkowniku

Gdy użytkownik się zaloguje, 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: