Możesz użyć Firebase Authentication, aby umożliwić użytkownikom logowanie się w aplikacji za pomocą co najmniej jednej metody logowania, w tym adresu e-mail i hasła, oraz dostawców tożsamości sfederowanej, 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 konsoli Firebase dodaj aplikację do projektu Firebase.
Dodawanie Firebase Authentication do aplikacji
Do instalowania zależności Firebase i zarządzania nimi używaj menedżera pakietów Swift.
- W Xcode, po otwarciu projektu aplikacji, kliknij 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 łączące) w ustawieniach kompilacji celu. - Gdy skończysz, Xcode zacznie automatycznie przetwarzać i pobierać 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 sposób uwierzytelniania użytkowników przez aplikację, przedstawimy zestaw narzędzi, których możesz używać do prototypowania i testowania funkcji Authentication: Firebase Local Emulator Suite. Jeśli wybierasz techniki i dostawców uwierzytelniania, testujesz różne modele danych z danymi publicznymi i prywatnymi za pomocą Authentication i Firebase Security Rules lub tworzysz prototypy interfejsów logowania, możliwość pracy lokalnej bez wdrażania usług na żywo może być świetnym rozwiązaniem.
Emulator Authentication jest częścią Local Emulator Suite, która umożliwia aplikacji interakcję z emulowaną zawartością i konfiguracją bazy danych, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).
Korzystanie z emulatora Authentication wymaga wykonania tylko kilku czynności:
- dodanie do konfiguracji testowej aplikacji wiersza kodu, który umożliwia połączenie z emulatorem;
- Uruchom
firebase emulators:startw katalogu głównym projektu lokalnego. - Korzystanie z interfejsu Local Emulator Suite do interaktywnego prototypowania lub interfejsu API REST emulatora Authentication do testowania nieinteraktywnego.
Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem Authentication. Więcej informacji znajdziesz we wprowadzeniu do Local Emulator Suite.
Teraz przejdźmy do uwierzytelniania 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 każdym widoku aplikacji, który wymaga informacji o zalogowanym użytkowniku, dołącz detektor do obiektu FIRAuth. Ten detektor jest wywoływany za każdym razem, gdy zmienia się stan logowania użytkownika.
Dołącz detektor 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 detektor 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 pozwoli nowym użytkownikom zarejestrować się w aplikacji za pomocą adresu e-mail i hasła. Gdy użytkownik wypełni formularz, zweryfikuj 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 dotychczasowych 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) {
// ...
}];
Pobieranie informacji o użytkowniku
Po zalogowaniu się użytkownika 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:
- Zaloguj się przez Google
- Logowanie przez Facebooka
- Logowanie na Twitterze
- Logowanie w GitHubie
- Logowanie anonimowe