Możesz zintegrować Firebase Authentication z niestandardowym systemem uwierzytelniania, modyfikując serwer uwierzytelniania, aby generował niestandardowe podpisane tokeny, gdy użytkownik zaloguje się. Aplikacja otrzymuje ten token i używa go do uwierzytelniania w Firebase.
Zanim zaczniesz
- Utwórz projekt Firebase i zarejestruj aplikację, jeśli nie zostało to jeszcze zrobione.
- 
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 opcję 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 projektu.
- Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.
 https://github.com/firebase/firebase-ios-sdk.git 
- Uzyskaj klucze serwera projektu:- Otwórz stronę Konta usługi w ustawieniach projektu.
- U dołu sekcji Firebase Admin SDK na stronie Konta usługi kliknij Wygeneruj nowy klucz prywatny.
- Nowa para kluczy publicznego/prywatnego konta usługi zostanie automatycznie zapisana na Twoim komputerze. Skopiuj ten plik na serwer uwierzytelniania.
 
Uwierzytelnianie za pomocą Firebase
- Zaimportuj moduł FirebaseCorew plikuUIApplicationDelegate, a także inne moduły Firebase używane przez delegata aplikacji. Aby na przykład użyć właściwości Cloud Firestore i Authentication:SwiftUIimport SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ... Swiftimport FirebaseCore import FirebaseFirestore import FirebaseAuth // ... Objective-C@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ... 
- Skonfiguruj współdzieloną instancję FirebaseAppw 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ć zamianę 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() } } } } 
- Gdy użytkownicy logują się w aplikacji, wysyłaj ich dane logowania (np. nazwę użytkownika i hasło) na serwer uwierzytelniania. Twój serwer sprawdza dane logowania i jeśli są prawidłowe, zwraca niestandardowy token .
- Po otrzymaniu niestandardowego tokena z serwera uwierzytelniania przekaż go do funkcji signInWithCustomToken, aby zalogować użytkownika:SwiftAuth.auth().signIn(withCustomToken: customToken ?? "") { user, error in // ... } Objective-C[[FIRAuth auth] signInWithCustomToken:customToken completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }]; 
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i powiązane z danymi logowania, czyli nazwą użytkownika i hasłem, numerem telefonu lub informacjami o dostawcy uwierzytelniania, za pomocą których użytkownik się zalogował. Nowe konto jest przechowywane w projekcie Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w projekcie, niezależnie od sposobu logowania.
- 
W aplikacjach możesz uzyskać podstawowe informacje o profilu użytkownika z obiektu User. Zobacz Zarządzanie użytkownikami.
- W Firebase Realtime Database i Cloud Storage regułach bezpieczeństwa możesz pobrać unikalny identyfikator zalogowanego użytkownika ze zmiennej - authi użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Możesz zezwolić użytkownikom na logowanie się w aplikacji za pomocą wielu dostawców uwierzytelniania, łącząc dane logowania dostawcy uwierzytelniania z istniejącym kontem użytkownika.
Aby wylogować użytkownika, wywołaj funkcję 
signOut:.
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Możesz też dodać kod obsługi błędów dla pełnego zakresu błędów uwierzytelniania. Patrz Obsługa błędów.