Możesz użyć uwierzytelniania Firebase, aby utworzyć tymczasowe konta anonimowe i używać ich do uwierzytelniania w Firebase. Za pomocą tych tymczasowych anonimowych kont użytkownicy, którzy nie zarejestrowali się jeszcze w Twojej aplikacji, mogą pracować z danymi chronionymi regułami bezpieczeństwa. Jeśli anonimowy użytkownik zdecyduje się zarejestrować w Twojej aplikacji, możesz powiązać jego dane logowania z anonimowym kontem, aby mógł kontynuować pracę z chronionymi danymi w przyszłych sesjach.
Zanim zaczniesz
Użyj Menedżera pakietów Swift, aby zainstalować zależności Firebase i zarządzać nimi.
- W Xcode, przy otwartym projekcie aplikacji, przejdź do File > Add Packages .
- Po wyświetleniu monitu dodaj repozytorium SDK platform Firebase Apple:
- Wybierz bibliotekę uwierzytelniania Firebase.
- Dodaj flagę
-ObjC
do sekcji Inne flagi linkera w ustawieniach kompilacji celu. - Po zakończeniu Xcode automatycznie rozpocznie rozwiązywanie i pobieranie zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Następnie wykonaj kilka kroków konfiguracyjnych:
- Jeśli jeszcze nie połączyłeś aplikacji z projektem Firebase, zrób to z konsoli Firebase .
- Włącz anonimową autoryzację:
- W konsoli Firebase otwórz sekcję Uwierzytelnianie .
- 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 zostaną automatycznie usunięte. W projektach z włączonym automatycznym czyszczeniem uwierzytelnianie anonimowe nie będzie już wliczane do limitów użytkowania ani przydziałów rozliczeniowych. Zobacz Automatyczne czyszczenie .
Uwierzytelnij się anonimowo w Firebase
Gdy niezalogowany użytkownik korzysta z funkcji aplikacji wymagającej uwierzytelniania w Firebase, zaloguj się anonimowo, wykonując następujące kroki:
- Zaimportuj moduł
FirebaseCore
do swojegoUIApplicationDelegate
, a także wszelkie inne moduły Firebase, których używa 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 aplikacji delegataapplication(_:didFinishLaunchingWithOptions:)
metoda: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, zapoznaj się z instrukcjami 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żeli
signInAnonymouslyWithCompletion:
zakończy się bez błędu, dane konta anonimowego użytkownika można uzyskać 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;
Zamień 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ć na nowym koncie pozycje, które użytkownik dodał do koszyka przed rejestracją. koszyk konta. Aby to zrobić, wykonaj następujące kroki:
- Gdy użytkownik zarejestruje się, wykonaj proces logowania dla dostawcy uwierzytelniania użytkownika, aż do wywołania jednej z metod
FIRAuth.signInWith
, ale nie łącznie. 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:Zaloguj się przez 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:
zalogowanego 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 będzie mogło uzyskać dostęp do danych Firebase anonimowego konta.
Automatyczne czyszczenie
Po włączeniu automatycznego czyszczenia 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 przydziałów rozliczeniowych.
- Wszelkie anonimowe konta utworzone po włączeniu automatycznego czyszczenia zostaną usunięte 30 dni po utworzeniu.
- Anonimowe konta utworzone przed włączeniem automatycznego czyszczenia zostaną usunięte około 30 dni po włączeniu automatycznego czyszczenia.
- Jeśli wyłączysz automatyczne czyszczenie, wszystkie anonimowe konta 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 będzie to dotyczyć, a Twój projekt został uaktualniony do uwierzytelniania Firebase z platformą tożsamości , 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 .