Za pomocą Firebase Authentication możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą jednego lub więcej metod logowania, w tym logowanie za pomocą adresu e-mail i hasła, dostawców tożsamości sfederowanych, takich jak Logowanie przez Google i Logowanie przez Facebooka. Ten pokazuje, jak zacząć korzystać z usługi Firebase Authentication adres e-mail i hasło, aby zalogować się w aplikacji.
Łączenie aplikacji z Firebase
- Zainstaluj pakiet SDK Firebase.
- W konsoli Firebase dodaj aplikację do projektu Firebase.
Dodaj Firebase Authentication do swojej aplikacji
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
(Opcjonalnie) Prototypowanie i testowanie przy użyciu Firebase Local Emulator Suite
Zanim przejdziemy do omówienia sposobu uwierzytelniania użytkowników przez Twoją aplikację, narzędzia służące do prototypowania i testowania funkcji Authentication: Firebase Local Emulator Suite Jeśli zastanawiasz się nad techniką uwierzytelniania i usługodawcom, testując różne modele danych z wykorzystaniem danych publicznych i prywatnych przy użyciu interfejsów Authentication i Firebase Security Rules, lub tworzy prototypy interfejsu logowania, pracować lokalnie bez wdrażania usług w czasie rzeczywistym.
Emulator Authentication jest częścią modułu Local Emulator Suite, który umożliwia aplikacji interakcję z emulowaną treścią i konfiguracją bazy danych a także opcjonalnie emulowane zasoby projektu (funkcje, inne bazy danych, i reguły zabezpieczeń).
Aby użyć emulatora Authentication, wystarczy wykonać kilka czynności:
- Dodajesz wiersz kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
- Uruchomienie
firebase emulators:start
w katalogu głównym projektu lokalnego. - Użycie interfejsu użytkownika Local Emulator Suite do interaktywnego prototypowania lub Interfejs API typu 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
Najpierw zaimportuj pakiet SDK Firebase na koncie delegata aplikacji:
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
W przypadku każdego widoku aplikacji, który wymaga informacji o zalogowanym użytkowniku,
dołączysz detektor do obiektu FIRAuth
. Ten detektor jest wywoływany za każdym razem,
zmieni się stan 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 pozwala nowym użytkownikom zarejestrować się w aplikacji za pomocą adresu e-mail
adresu e-mail i hasła. Gdy użytkownik wypełni formularz, potwierdź adres e-mail
adresu i hasła podanych przez użytkownika, a następnie przekaż je 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 istniejących użytkowników
Utwórz formularz, który umożliwia dotychczasowym użytkownikom logowanie się za pomocą ich adresów e-mail
i hasło. 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) {
// ...
}];
Uzyskiwanie informacji o użytkowniku
Gdy użytkownik się zaloguje, możesz uzyskać informacje o nim. Dla: 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 gości konta:
- Logowanie przez Google
- Logowanie do Facebooka
- Logowanie na Twitterze
- Logowanie w GitHub
- Logowanie anonimowe