Aby umożliwić użytkownikom uwierzytelnianie przy użyciu: Firebase Authentication, Firebase za pomocą ich adresów e-mail i haseł oraz do zarządzania kont opartych na haśle.
Zanim zaczniesz
Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.
- W Xcode po otwarciu projektu aplikacji przejdź do File > Dodaj pakiety.
- Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
- Wybierz bibliotekę Firebase Authentication.
- Dodaj flagę
-ObjC
do sekcji Inne flagi łączące w ustawieniach kompilacji celu. - Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie lub zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Następnie wykonaj kilka czynności konfiguracyjnych:
- Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, zrób to na stronie konsolę Firebase.
- Włącz logowanie za pomocą adresu e-mail/hasła:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na karcie Metoda logowania włącz logowanie Adres e-mail/hasło. i kliknij Zapisz.
Tworzenie konta opartego na haśle
Aby utworzyć nowe konto użytkownika z hasłem, wykonaj następujące czynności w sekcji aktywność związaną z logowaniem w Twojej aplikacji:
- Zaimportuj moduł
FirebaseCore
doUIApplicationDelegate
, jak i wszelkie inne Moduły Firebase używane przez przedstawiciela aplikacji. Aby na przykład użyć atrybutów Cloud Firestore i Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Skonfiguruj
FirebaseApp
współdzielonej instancji w uprawnieniach przedstawiciela aplikacji Metodaapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jeśli używasz SwiftUI, musisz utworzyć i dołączyć przedstawiciela aplikacji.
do struktury
App
za pomocąUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
Musisz też wyłączyć przełączanie przekazywania dostępu do aplikacji. Dla: więcej informacji znajdziesz w instrukcjach SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Gdy nowy użytkownik zarejestruje się za pomocą formularza rejestracji w aplikacji, wpisz wszystkie nowe weryfikacji konta wymaganych przez aplikację, takich jak sprawdzenie, czy nowe hasło do konta było poprawnie wpisane i jest zgodne z Twoją złożonością .
- Utwórz nowe konto, przekazując jego adres e-mail i hasło.
do
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 użytkownika za pomocą adresu e-mail i hasła
Procedury logowania użytkownika za pomocą hasła są podobne do tych na stronie tworzenia nowego konta. W sekcji aktywności związanej z logowaniem się w aplikacji wykonaj te czynności:
- Zaimportuj moduł
FirebaseCore
doUIApplicationDelegate
, jak i wszelkie inne Moduły Firebase używane przez przedstawiciela aplikacji. Aby na przykład użyć atrybutów Cloud Firestore i Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Skonfiguruj
FirebaseApp
współdzielonej instancji w uprawnieniach przedstawiciela aplikacji Metodaapplication(_:didFinishLaunchingWithOptions:)
:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Jeśli używasz SwiftUI, musisz utworzyć i dołączyć przedstawiciela aplikacji.
do struktury
App
za pomocąUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
Musisz też wyłączyć przełączanie przekazywania dostępu do aplikacji. Dla: więcej informacji znajdziesz w instrukcjach SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Gdy użytkownik zaloguje się w Twojej aplikacji, przekaż mu jego adres e-mail oraz
hasło do
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) { // ... }];
Zalecane: włącz ochronę wyliczania e-maili
Niektóre metody Firebase Authentication, które przyjmują adresy e-mail jako parametry, określone błędy, jeśli adres e-mail nie został zarejestrowany, a należało go zarejestrować; (np. podczas logowania za pomocą adresu e-mail i hasła) lub gdy musi być nieużywany (na przykład podczas zmiany adresu e-mail użytkownika). Może to być pomocne podczas sugerowania użytkownikom konkretnych rozwiązań, ale może też niepowołane osoby wykorzystywane do wykrywania adresów e-mail zarejestrowanych przez użytkowników.
Aby ograniczyć to ryzyko, zalecamy włączenie ochrony przed wyliczeniem adresów e-mail.
swojego projektu za pomocą narzędzia gcloud
Google Cloud. Pamiętaj, że włączenie tej opcji
zmienia działanie funkcji raportowania błędów w Firebase Authentication: upewnij się, że aplikacja
nie polega na bardziej szczegółowych błędach.
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z danymi logowania, czyli z nazwą użytkownika, hasłem i numerem telefonu, numer telefonu lub informacje o dostawcy uwierzytelniania – użytkownik zalogowany. Ten nowy jest przechowywane w ramach projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie, niezależnie od tego, jak się loguje.
-
W swoich aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z
User
. Zobacz Zarządzanie użytkownikami. Na liście Firebase Realtime Database i Cloud Storage regułami zabezpieczeń, pobierz ze zmiennej
auth
unikalny identyfikator zalogowanego użytkownika, i używać ich do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji przy użyciu wielokrotnego uwierzytelniania. dostawców, łącząc dane logowania dostawcy uwierzytelniania z istniejącego konta użytkownika.
Aby wylogować użytkownika, wywołaj
signOut:
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Można także dodać kod obsługi błędów dla pełnego zakresu uwierzytelniania . Patrz Obsługa błędów.