Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Uwierzytelniaj się w Firebase przy użyciu kont opartych na hasłach na platformach Apple

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Możesz użyć uwierzytelniania Firebase, aby umożliwić użytkownikom uwierzytelnianie się w Firebase przy użyciu ich adresów e-mail i haseł oraz zarządzać kontami aplikacji opartymi na hasłach.

Zanim zaczniesz

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.

Następnie wykonaj kilka czynności konfiguracyjnych:

  1. Jeśli aplikacja nie została jeszcze połączona z projektem Firebase, zrób to z konsoli Firebase .
  2. Włącz logowanie przez e-mail/hasło:
    1. W konsoli Firebase otwórz sekcję Auth .
    2. Na karcie Metoda logowania włącz metodę logowania przez e-mail/hasło i kliknij Zapisz .

Utwórz konto oparte na haśle

Aby utworzyć nowe konto użytkownika z hasłem, wykonaj następujące kroki w logowaniu w aplikacji:

  1. Zaimportuj moduł FirebaseCore do swojego UIApplicationDelegate , a także wszelkie inne moduły Firebase używane przez delegata aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:

    Szybki

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cel C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj współużytkowane wystąpienie FirebaseApp , zwykle w inicjatorze App lub w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    Szybki

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

    Cel C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Gdy nowy użytkownik zarejestruje się za pomocą formularza rejestracji aplikacji, wykonaj wszystkie nowe czynności weryfikacji konta wymagane przez aplikację, takie jak sprawdzenie, czy hasło do nowego konta zostało poprawnie wpisane i spełnia wymagania dotyczące złożoności.
  4. Utwórz nowe konto, przekazując adres e-mail i hasło nowego użytkownika do createUserWithEmail:email:password:completion: .

    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) {
      // ...
    }];
    Jeśli nowe konto zostało pomyślnie utworzone, użytkownik jest zalogowany i możesz pobrać dane konta użytkownika z obiektu wynikowego, który jest przekazywany do metody wywołania zwrotnego.

Zaloguj się użytkownika za pomocą adresu e-mail i hasła

Czynności dotyczące logowania użytkownika za pomocą hasła są podobne do czynności związanych z tworzeniem nowego konta. W aktywności związanej z logowaniem w aplikacji wykonaj następujące czynności:

  1. Zaimportuj moduł FirebaseCore do swojego UIApplicationDelegate , a także wszelkie inne moduły Firebase używane przez delegata aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:

    Szybki

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Cel C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Skonfiguruj współużytkowane wystąpienie FirebaseApp , zwykle w inicjatorze App lub w metodzie application(_:didFinishLaunchingWithOptions:) delegata aplikacji:

    Szybki

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

    Cel C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Gdy użytkownik zaloguje się do Twojej aplikacji, przekaż adres e-mail i hasło użytkownika do signInWithEmail:email:password:completion: .

    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) {
      // ...
    }];
    Jeśli użytkownik pomyślnie się zaloguje, możesz pobrać dane konta użytkownika z obiektu wynikowego, który jest przekazywany do metody wywołania zwrotnego.

Następne kroki

Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i połączone z poświadczeniami — czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania — przy użyciu których użytkownik się zalogował. To nowe konto jest przechowywane jako część projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się on loguje.

  • W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu FIRUser . Zobacz Zarządzanie użytkownikami .

  • W regułach bezpieczeństwa bazy danych czasu rzeczywistego i usługi Cloud Storage Firebase możesz uzyskać unikalny identyfikator zalogowanego użytkownika ze zmiennej auth i używać go do kontrolowania, do jakich danych użytkownik ma dostęp.

Możesz zezwolić użytkownikom na logowanie się do Twojej aplikacji przy użyciu wielu dostawców uwierzytelniania, łącząc poświadczenia dostawcy uwierzytelniania z istniejącym kontem użytkownika.

Aby wylogować użytkownika, wywołaj signOut: .

Szybki

    let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print("Error signing out: %@", signOutError)
}
  

Cel C

    NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}

Możesz także dodać kod obsługi błędów dla pełnego zakresu błędów uwierzytelniania. Zobacz Obsługa błędów .