Możesz używać Firebase Authentication do tworzenia i używania tymczasowych kont anonimowych do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą być używane do umożliwienia użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, pracy z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w aplikacji, możesz połączyć jego dane logowania z kontem anonimowym, aby mógł on nadal pracować z chronionymi danymi w kolejnych sesjach.
Zanim zaczniesz
-
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 pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Firebase Authentication.
- Dodaj flagę
-ObjC
do 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
- Jeśli nie masz jeszcze połączonej aplikacji z projektem Firebase, zrób to w konsoli Firebase.
- Włączanie anonimowego uwierzytelniania:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie.
- Na stronie Metody logowania włącz metodę logowania Anonimowy.
- Opcjonalnie: jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta, które istnieją dłużej niż 30 dni, zostaną automatycznie usunięte. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów wykorzystania ani kwot naliczanych za korzystanie z usługi. Zobacz Automatyczne czyszczenie.
Anonimowe uwierzytelnianie w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelniania w Firebase, zaloguj go anonimowo, wykonując te czynności:
- Zaimportuj moduł
FirebaseCore
w plikuUIApplicationDelegate
, a także wszystkie inne moduły Firebase, których używa delegowany obiekt aplikacji. Aby na przykład użyć właściwości Cloud Firestore i Authentication:import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Skonfiguruj współdzieloną instancję
FirebaseApp
w metodzieapplication(_:didFinishLaunchingWithOptions:)
w delegacie aplikacji:// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs FirebaseApp.configure()
// Use Firebase library to configure APIs [FIRApp configure];
- Jeśli używasz SwiftUI, musisz utworzyć obiekt delegujący aplikacji i dołączyć go do struktury
App
za pomocą funkcjiUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
. Musisz też wyłączyć swizlowanie zastępników aplikacji. Więcej informacji znajdziesz w instrukcjach dotyczących 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:
:Auth.auth().signInAnonymously { authResult, error in // ... }
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Jeśli metoda
signInAnonymouslyWithCompletion:
zakończy się bez błędu, możesz uzyskać dane konta anonimowego użytkownika z obiektuFIRAuthDataResult
:guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
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 zezwolić mu na kontynuowanie pracy na nowym koncie. Możesz na przykład udostępnić w koszyku nowego konta produkty, które użytkownik dodał do koszyka przed rejestracją. Aby to zrobić:
- Gdy użytkownik się rejestruje, przeprowadź proces logowania w usługach dostawcy uwierzytelniania, aż do wywołania jednej z metod
FIRAuth.signInWith
. Możesz na przykład pobrać token identyfikatora Google, token dostępu Facebooka lub adres e-mail i hasło użytkownika. Uzyskaj
FIRAuthCredential
dla nowego dostawcy uwierzytelniania:Logowanie przez Google
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Logowanie przez Facebooka
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Logowanie za pomocą adresu e-mail i hasła
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Przekaż obiekt
FIRAuthCredential
metodzielinkWithCredential:completion:
użytkownika logującego się w aplikacji:user.link(with: credential) { authResult, error in // ... } }
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Jeśli wywołanie funkcji linkWithCredential:completion:
się powiedzie, nowe konto użytkownika będzie mogło uzyskać dostęp do danych Firebase na anonimowym koncie.
Automatyczne oczyszczanie
Jeśli Twój projekt został przeniesiony na wyższy abonament Firebase Authentication with Identity Platform, możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji Firebase automatycznie usuwa anonimowe konta, które mają więcej niż 30 dni. W projektach z włączonym automatycznym oczyszczaniem uwierzytelnianie anonimowe nie będzie wliczane do limitów wykorzystania ani kwot na płatności.
- Anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać usunięte automatycznie w dowolnym momencie po 30 dniach od ich utworzenia.
- Istniejące konta anonimowe będą mogły zostać automatycznie usunięte po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie zaplanowane do usunięcia anonimowe konta pozostaną zaplanowane do usunięcia.
- Jeśli „uaktualnisz” konto anonimowe, łącząc je z dowolną metodą logowania, konto to nie zostanie automatycznie usunięte.
Jeśli chcesz sprawdzić, ilu użytkowników dotknie ta zmiana, zanim ją włączysz, i masz projekt w wersji Firebase Authentication with Identity Platform, możesz przefiltrować dane w Cloud Logging według atrybutu is_anon
.
Dalsze kroki
Teraz, gdy użytkownicy mogą się uwierzytelniać za pomocą Firebase, możesz kontrolować ich dostęp do danych w bazie danych Firebase za pomocą reguł Firebase.