Możesz użyć Uwierzytelniania Firebase do tworzenia i używania tymczasowych anonimowych kont do uwierzytelniania w Firebase. Tych tymczasowych anonimowych kont można użyć, aby umożliwić użytkownikom, którzy jeszcze nie zarejestrowali się w Twojej aplikacji, pracę z danymi chronionymi przez reguły bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać jego dane logowania z kontem anonimowym, aby mógł kontynuować pracę z chronionymi danymi w przyszłych sesjach.
Zanim zaczniesz
Użyj Menedżera pakietów Swift, aby zainstalować i zarządzać zależnościami Firebase.
- W Xcode przy otwartym projekcie aplikacji przejdź do File > Add Packages .
- Po wyświetleniu monitu dodaj repozytorium Firebase Apple platforms SDK:
- Wybierz bibliotekę uwierzytelniania Firebase.
- Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie zależności w tle.
https://github.com/firebase/firebase-ios-sdk
Następnie wykonaj kilka kroków konfiguracyjnych:
- Jeśli nie połączyłeś jeszcze swojej aplikacji z projektem Firebase, zrób to z poziomu konsoli Firebase .
- Włącz anonimową autoryzację:
- W konsoli Firebase otwórz sekcję Auth .
- Na stronie Metody logowania włącz metodę logowania anonimowego .
- Opcjonalnie : Włącz automatyczne czyszczenie. Po włączeniu tego ustawienia anonimowe konta starsze niż 30 dni będą automatycznie usuwane. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani limitów rozliczeniowych. Zobacz Automatyczne czyszczenie .
Uwierzytelniaj anonimowo w Firebase
Gdy wylogowany użytkownik korzysta z funkcji aplikacji, która wymaga uwierzytelnienia w Firebase, zaloguj się anonimowo, wykonując następujące czynności:
- Zaimportuj moduł
FirebaseCore
do swojegoUIApplicationDelegate
, a także wszelkie inne moduły Firebase, z których korzysta delegat aplikacji. Na przykład, aby użyć Cloud Firestore i uwierzytelniania:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Szybki
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Cel C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Skonfiguruj udostępnioną instancję
FirebaseApp
w metodzie applicationapplication(_:didFinishLaunchingWithOptions:)
delegata aplikacji:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Szybki
// Use Firebase library to configure APIs FirebaseApp.configure()
Cel C
// Use Firebase library to configure APIs [FIRApp configure];
- Jeśli używasz SwiftUI, musisz utworzyć delegata aplikacji i dołączyć go do struktury
App
za pośrednictwemUIApplicationDelegateAdaptor
lubNSApplicationDelegateAdaptor
. Musisz także wyłączyć przełączanie delegatów aplikacji. Aby uzyskać więcej informacji, zobacz instrukcje 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:
::Szybki
Auth.auth().signInAnonymously { authResult, error in // ... }
Cel C
[[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
- Jeśli metoda
signInAnonymouslyWithCompletion:
zakończy się bezbłędnie, możesz pobrać dane konta anonimowego użytkownika z obiektuFIRAuthDataResult
:Szybki
guard let user = authResult?.user else { return } let isAnonymous = user.isAnonymous // true let uid = user.uid
Cel C
FIRUser *user = authResult.user; BOOL isAnonymous = user.anonymous; // YES NSString *uid = user.uid;
Konwertuj konto anonimowe na konto stałe
Gdy anonimowy użytkownik zarejestruje się w Twojej aplikacji, możesz zezwolić mu na kontynuowanie pracy na nowym koncie — na przykład możesz udostępnić produkty dodane przez użytkownika do koszyka przed rejestracją w nowym koszyk konta. Aby to zrobić, wykonaj następujące kroki:
- Gdy użytkownik zarejestruje się, dokończ przepływ logowania dla dostawcy uwierzytelniania użytkownika, ale nie obejmuje to wywołania jednej z metod
FIRAuth.signInWith
. Na przykład uzyskaj token identyfikatora Google użytkownika, token dostępu do Facebooka lub adres e-mail i hasło. Uzyskaj
FIRAuthCredential
dla nowego dostawcy uwierzytelniania:Logowanie Google
Szybki
guard let authentication = user?.authentication, let idToken = authentication.idToken else { return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: authentication.accessToken)
Cel C
FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString];
Nazwa użytkownika Facebook
Szybki
let credential = FacebookAuthProvider .credential(withAccessToken: AccessToken.current!.tokenString)
Cel C
FIRAuthCredential *credential = [FIRFacebookAuthProvider credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
Logowanie za pomocą hasła e-mail
Szybki
let credential = EmailAuthProvider.credential(withEmail: email, password: password)
Cel C
FIRAuthCredential *credential = [FIREmailAuthProvider credentialWithEmail:email password:password];
Przekaż obiekt
FIRAuthCredential
do metodylinkWithCredential:completion:
logowania użytkownika:Szybki
user.link(with: credential) { authResult, error in // ... } }
Cel C
[[FIRAuth auth].currentUser linkWithCredential:credential completion:^(FIRAuthDataResult *result, NSError *_Nullable error) { // ... }];
Jeśli wywołanie linkWithCredential:completion:
powiedzie się, nowe konto użytkownika może uzyskać dostęp do danych Firebase konta anonimowego.
Automatyczne czyszczenie
Gdy włączysz automatyczne czyszczenie w konsoli Firebase, anonimowe konta starsze niż 30 dni zostaną automatycznie usunięte. Włączenie tego ustawienia zapobiega zapełnianiu bazy danych użytkowników nieużywanymi kontami. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie wliczane do limitów użytkowania ani limitów rozliczeniowych.
- Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia zostaną usunięte po 30 dniach od utworzenia.
- Anonimowe konta utworzone przed włączeniem automatycznego czyszczenia zostaną usunięte po około 30 dniach od włączenia automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta, które mają zostać usunięte, pozostaną zaplanowane do usunięcia.
- Jeśli „zaktualizujesz” anonimowe konto, łącząc je z dowolną metodą logowania, konto nie zostanie automatycznie usunięte.
Jeśli przed włączeniem tej funkcji chcesz zobaczyć, ilu użytkowników będzie to miało wpływ, a Twój projekt został uaktualniony do uwierzytelniania Firebase z Identity Platform , możesz filtrować według is_anon
w Cloud Logging .
Następne 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 .