Do uwierzytelniania w Firebase możesz używać Firebase Authentication, aby tworzyć i używać tymczasowych kont anonimowych do uwierzytelniania w Firebase. Tymczasowe konta anonimowe mogą służyć do tego, aby użytkownicy, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, mogli pracować z danymi chronionymi przez reguły bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z kontem anonimowym tak, aby mógł on kontynuować pracę z chronionymi danymi w przyszłych sesjach.
Zanim zaczniesz
-
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 kolejno 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
- Jeśli nie masz jeszcze połączonej aplikacji z projektem w Firebase, zrób to w Firebase konsoli.
- Włącz anonimowe uwierzytelnianie:
- W Firebase konsoli otwórz sekcję Auth (Uwierzytelnianie).
- Na stronie Sign-in Methods (Metody logowania) włącz metodę logowania Anonymous (Anonimowe).
- Opcjonalnie: jeśli Twój projekt został uaktualniony do Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, konta anonimowe starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie się już wliczać do limitów wykorzystania ani płatności. Więcej informacji znajdziesz w sekcji Automatyczne czyszczenie.
Anonimowe uwierzytelnianie w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelnienia w Firebase, zaloguj go anonimowo, wykonując te czynności:
- Zaimportuj moduł
FirebaseCorewUIApplicationDelegate, a także inne moduły Firebase, których używa delegat aplikacji. Aby na przykład używać 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
FirebaseAppwspółdzieloną instancję w metodzieapplication(_:didFinishLaunchingWithOptions:)delegata aplikacji: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ć delegata aplikacji i dołączyć go
do struktury
Appza pomocąUIApplicationDelegateAdaptorlubNSApplicationDelegateAdaptor. Musisz też wyłączyć swizzling delegata aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Wywołaj metodę
signInAnonymouslyWithCompletion::Swift
Auth.auth().signInAnonymously { authResult, error in // ... }
Objective-C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Jeśli metoda
signInAnonymouslyWithCompletion:zakończy się bez błędu, możesz pobrać dane konta anonimowego użytkownika z obiektuFIRAuthDataResult:Swift
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Objective-C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Przekształcanie konta anonimowego w konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz pozwolić mu na kontynuowanie pracy na nowym koncie. Możesz na przykład sprawić, aby elementy dodane przez użytkownika do koszyka na zakupy przed rejestracją były dostępne w koszyku na zakupy na jego nowym koncie. Aby to zrobić, wykonaj te czynności:
- Gdy użytkownik się zarejestruje, dokończ proces logowania u dostawcy uwierzytelniania użytkownika, ale nie wywołuj żadnej z
FIRAuth.signInWithmetod. Na przykład pobierz token identyfikatora Google, token dostępu do Facebooka lub adres e-mail i hasło użytkownika. Pobierz
FIRAuthCredentialdla nowego dostawcy uwierzytelniania:Logowanie przez Google
Swift
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Objective-C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Logowanie przez Facebooka
Swift
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objective-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Logowanie za pomocą adresu e-mail i hasła
Swift
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objective-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Przekaż obiekt
FIRAuthCredentialdo metodylinkWithCredential:completion:zalogowanego użytkownika:Swift
user.link(with: credential) { authResult, error in // ... } }
Objective-C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Jeśli wywołanie linkWithCredential:completion: się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase konta anonimowego.
Automatyczne czyszczenie
Jeśli Twój projekt został uaktualniony do Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie w konsoli Firebase. Gdy włączysz tę funkcję, Firebase będzie automatycznie usuwać konta anonimowe starsze niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie się wliczać do limitów wykorzystania ani płatności.
- Wszystkie konta anonimowe utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie usunięte w dowolnym momencie po upływie 30 dni od ich utworzenia.
- Istniejące konta anonimowe będą kwalifikować się do automatycznego usunięcia po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie konta anonimowe zaplanowane do usunięcia pozostaną zaplanowane do usunięcia.
- Jeśli "uaktualnisz" konto anonimowe, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz sprawdzić, ilu użytkowników to dotyczy, a Twój projekt został
uaktualniony do Firebase Authentication with Identity Platform, możesz filtrować według
is_anon w Cloud
Logging.
Dalsze kroki
Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase.