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
- Zainstaluj pakiet SDK Firebase.
- 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.
- Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Firebase Authentication.
- Dodaj flagę
-ObjCdo sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji celu. - Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
(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:
- Dodanie wiersza kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
- Uruchomienie polecenia
firebase emulators:startw katalogu głównym projektu lokalnego. - 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:
- Logowanie przez Google
- Logowanie przez Facebooka
- Logowanie przez Twittera
- Logowanie przez GitHub
- Logowanie anonimowe