Możesz użyć Firebase Authentication, aby zezwolić użytkownikom na logowanie się w Twojej aplikacji za pomocą co najmniej 1 metody logowania, w tym logowania za pomocą adresu e-mail i hasła, oraz usług dostawców tożsamości sfederowanych, takich jak Logowanie przez Google i logowanie przez Facebooka. W tym samouczku dowiesz się, jak zacząć korzystać z Firebase Authentication, dodając do aplikacji logowanie przy użyciu 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 instalacji zależności Firebase i zarządzania nimi możesz używać menedżera pakietów Swift.
- Po otwarciu projektu aplikacji w Xcode wybierz Plik > Dodaj pakiety.
- Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
- Wybierz bibliotekę Firebase Authentication.
- Dodaj flagę
-ObjC
w sekcji Inne flagi linkera w ustawieniach kompilacji docelowej. - Gdy to zrobisz, Xcode automatycznie zacznie wyszukiwać 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 w aplikacji, przedstawimy zestaw narzędzi, których możesz używać do tworzenia prototypów i testowania funkcji Authentication:Firebase Local Emulator Suite. Jeśli zastanawiasz się, którą technikę uwierzytelniania i którego dostawcę wybrać, testując różne modele danych z danymi publicznymi i prywatnymi za pomocą funkcji Authentication i Firebase Security Rules lub prototypując interfejs logowania, warto pracować lokalnie bez wdrażania usług na żywo.
Emulator Authentication jest częścią Local Emulator Suite, który umożliwia aplikacji interakcję z treścią i konfiguracją emulowanej bazy danych, a także opcjonalnie emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).
Korzystanie z emulatora Authentication wymaga wykonania kilku czynności:
- Dodajesz wiersz kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
- W katalogu głównym lokalnego katalogu projektu uruchom
firebase emulators:start
. - Korzystanie z interfejsu Local Emulator Suite do tworzenia interaktywnych prototypów lub interfejsu API REST emulatora Authentication do testów nieinterakcyjnych.
Szczegółowy przewodnik znajdziesz w artykule Łączenie aplikacji z emulatorem Authentication. Więcej informacji znajdziesz w Local Emulator Suitewprowadzeniu.
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];
Wykrywaj stan uwierzytelniania
Do każdego widoku aplikacji, który wymaga informacji o zalogowanym użytkowniku, dołącz do obiektu FIRAuth
listenera. Ten detektor jest wywoływany po każdej zmianie
stanu logowania użytkownika.
Podłącz detektor w metodzie viewWillAppear
kontrolera widoku danych:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
I odłącz detektor w metodzie viewWillDisappear
kontrolera widoku:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Zarejestruj nowych użytkowników
Utwórz formularz, który umożliwia nowym użytkownikom rejestrację w aplikacji za pomocą ich adresu e-mail i hasła. Gdy użytkownik wypełni formularz, sprawdź poprawność adresu e-mail i hasła podanych przez niego, 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 pozwoli obecnym użytkownikom logować 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 słuchaczu 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 na Twitterze
- Logowanie w GitHubie
- Logowanie anonimowe