获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Pierwsze kroki z uwierzytelnianiem Firebase na platformach Apple

Możesz użyć uwierzytelniania Firebase, aby umożliwić użytkownikom logowanie się do Twojej aplikacji przy użyciu co najmniej jednej metody logowania, w tym logowania za pomocą adresu e-mail i hasła oraz dostawców tożsamości federacyjnych, takich jak Logowanie przez Google i Logowanie przez Facebook. Ten samouczek umożliwia rozpoczęcie pracy z Uwierzytelnianiem Firebase, pokazując, jak dodać adres e-mail i hasło logowania do aplikacji.

Połącz swoją aplikację z Firebase

  1. Zainstaluj pakiet Firebase SDK .
  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ć i zarządzać zależnościami Firebase.

  1. W Xcode przy otwartym projekcie aplikacji przejdź do pliku > Dodaj pakiety .
  2. Po wyświetleniu monitu dodaj repozytorium SDK platformy Firebase Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wybierz bibliotekę Uwierzytelniania Firebase.
  5. Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie zależności w tle.

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

Zanim zaczniemy mówić o tym, jak Twoja aplikacja uwierzytelnia użytkowników, przedstawmy zestaw narzędzi, których możesz użyć do prototypowania i testowania funkcjonalności uwierzytelniania: Firebase Local Emulator Suite. Jeśli decydujesz się między technikami i dostawcami uwierzytelniania, wypróbowujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą uwierzytelniania i reguł zabezpieczeń Firebase lub tworzysz prototypy projektów interfejsu logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być świetnym pomysłem .

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

Korzystanie z emulatora uwierzytelniania obejmuje tylko kilka kroków:

  1. Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. Z katalogu głównego lokalnego katalogu projektu uruchom firebase emulators:start .
  3. Korzystanie z interfejsu użytkownika lokalnego pakietu emulatorów do interaktywnego prototypowania lub interfejsu API REST emulatora uwierzytelniania do testowania nieinteraktywnego.

Szczegółowy przewodnik jest dostępny w artykule Połącz swoją aplikację z emulatorem uwierzytelniania . Aby uzyskać więcej informacji, zobacz wprowadzenie do lokalnego pakietu emulatorów .

Przejdźmy teraz do uwierzytelniania użytkowników.

Zainicjuj pakiet Firebase SDK

W delegaturze aplikacji najpierw zaimportuj pakiet Firebase SDK:

Szybki

import FirebaseCore

Cel C

@import FirebaseCore;

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

Szybki

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

Cel C

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

Nasłuchuj stanu uwierzytelniania

Dla 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 detektor w metodzie viewWillAppear kontrolera widoku:

Szybki

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

Cel C

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

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

Szybki

Auth.auth().removeStateDidChangeListener(handle!)

Cel C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Zarejestruj nowych użytkowników

Utwórz formularz, który pozwoli nowym użytkownikom zarejestrować się w Twojej aplikacji przy użyciu ich adresu e-mail i hasła. Gdy użytkownik wypełni formularz, zweryfikuj adres e-mail i hasło podane przez użytkownika, a następnie przekaż je do metody createUser :

Szybki

Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
  // ...
}

Cel C

[[FIRAuth auth] createUserWithEmail:email
                           password:password
                         completion:^(FIRAuthDataResult * _Nullable authResult,
                                      NSError * _Nullable error) {
  // ...
}];

Zaloguj się istniejących użytkowników

Utwórz formularz, który umożliwi istniejącym użytkownikom logowanie się przy użyciu ich adresu e-mail i hasła. Gdy użytkownik wypełni formularz, signIn metodę logowania:

Szybki

Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
  guard let strongSelf = self else { return }
  // ...
}

Cel C

[[FIRAuth auth] signInWithEmail:self->_emailField.text
                       password:self->_passwordField.text
                     completion:^(FIRAuthDataResult * _Nullable authResult,
                                  NSError * _Nullable error) {
  // ...
}];

Uzyskaj informacje o użytkowniku

Po pomyślnym zalogowaniu się użytkownika możesz uzyskać informacje o użytkowniku. Na przykład w słuchaczu stanu uwierzytelniania :

Szybki

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 += " "
  }
  // ...
}

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

Następne kroki

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