Dzięki Uwierzytelnianiu Firebase możesz tworzyć tymczasowe anonimowe konta i używać ich do uwierzytelniania w Firebase. Te tymczasowe anonimowe konta mogą umożliwiać użytkownikom, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, na pracę z danymi chronionymi przez reguły zabezpieczeń. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz połączyć jego dane logowania z anonimowym kontem, aby mógł nadal korzystać ze swoich chronionych danych w kolejnych sesjach.
Zanim zaczniesz
-
Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.
- Po otwarciu projektu aplikacji przejdź w Xcode do File > Add Packages (Plik > Dodaj pakiety).
- Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
- Wybierz bibliotekę uwierzytelniania Firebase.
- Dodaj flagę
-ObjC
do sekcji Inne flagi łączące w ustawieniach kompilacji celu. - Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
- Jeśli Twoja aplikacja nie jest jeszcze połączona z projektem Firebase, możesz to zrobić z poziomu konsoli Firebase.
- Włącz anonimowe uwierzytelnianie:
- 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 Uwierzytelnianie Firebase na platformie Identity Platform, możesz włączyć automatyczne czyszczenie. Gdy włączysz to ustawienie, anonimowe konta starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem anonimowe uwierzytelnianie nie będzie już wliczane do limitów wykorzystania ani limitów płatności. Zobacz Automatyczne czyszczenie.
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik używa funkcji aplikacji, która wymaga uwierzytelniania w Firebase, zaloguj się anonimowo, wykonując te czynności:
- Zaimportuj moduł
FirebaseCore
do obiektuUIApplicationDelegate
, a także wszystkie inne moduły Firebase używane przez przedstawiciela aplikacji. Aby na przykład użyć Cloud Firestore i Uwierzytelniania:Certyfikat 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 współdzieloną instancję
FirebaseApp
w metodzieapplication(_:didFinishLaunchingWithOptions:)
przedstawiciela aplikacji:Certyfikat 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ć przedstawiciela aplikacji i dołączyć go do struktury
App
za pomocąUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
. Musisz też wyłączyć przełączanie przekazywania dostępu do aplikacji. Więcej informacji znajdziesz w instrukcjach SwiftUI.Certyfikat 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 anonimowego konta 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 zezwolić mu na kontynuowanie pracy na nowym koncie – np. możesz udostępnić produkty dodane przez tego użytkownika do koszyka, zanim się zarejestruje w koszyku na nowe konto. Aby to zrobić:
- Gdy użytkownik się zarejestruje, przeprowadź proces logowania u dostawcy uwierzytelniania użytkownika aż do wywołania jednej z metod
FIRAuth.signInWith
(ale bez niego). Możesz na przykład uzyskać token identyfikatora Google użytkownika, token dostępu Facebooka lub adres e-mail i hasło. Pobierz
FIRAuthCredential
dla 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 do Facebooka
Swift
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Objective-C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Logowanie się za pomocą adresu e-mail
Swift
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Objective-C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Przekaż obiekt
FIRAuthCredential
do 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 uzyska dostęp do danych Firebase tego konta anonimowego.
Czyszczenie automatyczne
Po uaktualnieniu projektu do Uwierzytelniania Firebase z Identity Platform możesz włączyć automatyczne czyszczenie w konsoli Firebase. Po włączeniu tej funkcji Firebase może automatycznie usuwać anonimowe konta starsze niż 30 dni. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie jest wliczane do limitów wykorzystania ani limitów płatności.
- Wszystkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia mogą zostać automatycznie usunięte w dowolnym momencie po 30 dniach od utworzenia.
- Istniejące anonimowe konta będą mogły zostać automatycznie usunięte po 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta przeznaczone do usunięcia pozostaną zaplanowane do usunięcia.
- Jeśli uaktualnisz konto anonimowe, łącząc je z dowolną metodą logowania, nie zostanie ono automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz sprawdzić, na ilu użytkowników ta funkcja będzie miała wpływ, i przeniesiesz swój projekt na Uwierzytelnianie Firebase na platformie Identity Platform, w Cloud Logging możesz filtrować według wartości is_anon
.
Dalsze kroki
Teraz, gdy użytkownicy mogą uwierzytelniać się w Firebase, możesz kontrolować ich dostęp do danych w Twojej bazie danych Firebase za pomocą reguł Firebase.