Puoi integrare Firebase Authentication con un sistema di autenticazione personalizzato Modificare il server di autenticazione per produrre token firmati personalizzati quando esegue l'accesso. La tua app riceve questo token e lo utilizza per autenticarsi con Firebase.
Prima di iniziare
- Crea un progetto Firebase e registra la tua app se non l'hai ancora fatto.
-
Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Aggiungi pacchetti.
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple Firebase:
- Scegli la raccolta Firebase Authentication.
- Aggiungi il flag
-ObjC
alla sezione Altri flag del linker delle impostazioni di compilazione del target. - Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
- Recupera le chiavi server del progetto:
- Vai alla pagina Account di servizio. nelle impostazioni del progetto.
- Fai clic su Genera nuova chiave privata nella parte inferiore del Sezione SDK Admin Firebase della pagina Account di servizio.
- La coppia di chiavi pubblica/privata del nuovo account di servizio viene automaticamente salvate sul computer. Copia questo file nel server di autenticazione.
Autenticazione con Firebase
- Importa il modulo
FirebaseCore
nel tuoUIApplicationDelegate
e tutti gli altri Moduli Firebase utilizzati dal delegato della tua app. Ad esempio, per utilizzare Cloud Firestore e Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Configura un
FirebaseApp
nel delegato della tua applicazione Metodoapplication(_:didFinishLaunchingWithOptions:)
: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];
- Se utilizzi SwiftUI, devi creare un delegato per l'applicazione e collegarlo
al tuo struct
App
tramiteUIApplicationDelegateAdaptor
oppureNSApplicationDelegateAdaptor
. Devi anche disattivare lo scambio del delegato dell'app. Per maggiori informazioni, consulta le istruzioni di SwiftUI.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Quando gli utenti accedono alla tua app, invia le loro credenziali di accesso (ad ad esempio nome utente e password) al tuo server di autenticazione. Il tuo server controlla le credenziali e restituisce un token personalizzato se sono validi.
- Dopo aver ricevuto il token personalizzato dal tuo server di autenticazione, passalo
a
signInWithCustomToken
per far accedere l'utente:Swift
Auth.auth().signIn(withCustomToken: customToken ?? "") { user, error in // ... }
Objective-C
[[FIRAuth auth] signInWithCustomToken:customToken completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e collegati alle credenziali, ovvero nome utente, password, numero o informazioni del provider di autenticazione, ovvero l'utente con cui ha eseguito l'accesso. Questo nuovo viene archiviato come parte del progetto Firebase e può essere utilizzato per identificare a un utente in ogni app del progetto, a prescindere da come esegue l'accesso.
-
Nelle tue app puoi ottenere le informazioni di base del profilo dell'utente dal
User
. Vedi Gestire gli utenti. In Firebase Realtime Database e Cloud Storage Regole di sicurezza, puoi ottieni l'ID utente unico dell'utente che ha eseguito l'accesso dalla variabile
auth
, e usarli per controllare i dati a cui un utente può accedere.
Puoi consentire agli utenti di accedere alla tua app utilizzando più autenticazioni collegando le credenziali del provider di autenticazione a un a un account utente esistente.
Per disconnettere un utente, chiama
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; }
Potresti anche voler aggiungere il codice per la gestione degli errori per l'intero intervallo di autenticazione errori. Vedi Gestire gli errori.