Puoi utilizzare Firebase Authentication per consentire agli utenti di eseguire l'autenticazione con Firebase utilizzando i loro indirizzi email e le loro password e per gestire gli account basati su password della tua app.
Prima di iniziare
Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai a File > Add Packages (File > Aggiungi pacchetti).
- Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
- Scegli la Firebase Authentication libreria.
- Aggiungi il flag
-ObjCalla sezione Other Linker Flags (Altri flag del linker) delle impostazioni di compilazione della destinazione. - Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk.git
Poi, esegui alcuni passaggi di configurazione:
- Se non hai ancora collegato l'app al progetto Firebase, fallo da console Firebase.
- Abilita l'accesso con email/password:
- Nella Firebase console, apri la sezione Autenticazione.
- Nella scheda Metodo di accesso, abilita il metodo di accesso Email/password metodo e fai clic su Salva.
Creare un account basato su password
Per creare un nuovo account utente con una password, completa i seguenti passaggi nell'attività di accesso dell'app:
- Importa il modulo
FirebaseCoreinUIApplicationDelegate, nonché tutti gli altri moduli Firebase utilizzati dal delegato dell'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'istanza condivisa nel metodo
application(_:didFinishLaunchingWithOptions:)del delegato dell'app:FirebaseAppSwiftUI
// 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 dell'applicazione e collegarlo
alla struttura
ApptramiteUIApplicationDelegateAdaptoroNSApplicationDelegateAdaptor. Devi anche disattivare lo swizzling del delegato dell'app. Per ulteriori 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 un nuovo utente si registra utilizzando il modulo di registrazione dell'app, completa tutti i nuovi passaggi di convalida dell'account richiesti dall'app, ad esempio verifica che la password del nuovo account sia stata digitata correttamente e soddisfi i requisiti di complessità.
- Crea un nuovo account passando l'indirizzo email e la password del nuovo utente
a
createUser.Se il nuovo account è stato creato correttamente, l'utente ha eseguito l'accesso e puoi recuperare i dati dell'account utente dall'oggetto del risultato passato al metodo di callback.Swift
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // ... }
Objective-C
[[FIRAuth auth] createUserWithEmail:email password:password completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Accedere a un utente con un indirizzo email e una password
I passaggi per accedere a un utente con una password sono simili a quelli per creare un nuovo account. Nell'attività di accesso dell'app, procedi nel seguente modo:
- Importa il modulo
FirebaseCoreinUIApplicationDelegate, nonché tutti gli altri moduli Firebase utilizzati dal delegato dell'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'istanza condivisa nel metodo
application(_:didFinishLaunchingWithOptions:)del delegato dell'app:FirebaseAppSwiftUI
// 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 dell'applicazione e collegarlo
alla struttura
ApptramiteUIApplicationDelegateAdaptoroNSApplicationDelegateAdaptor. Devi anche disattivare lo swizzling del delegato dell'app. Per ulteriori 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 un utente accede alla tua app, passa l'indirizzo email e
la password dell'utente a
signIn.Se l'utente accede correttamente, puoi recuperare i dati dell'account utente da l'oggetto del risultato passato al metodo di callback.Swift
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in guard let strongSelf = self else { return } // ... }
Objective-C
[[FIRAuth auth] signInWithEmail:self->_emailField.text password:self->_passwordField.text completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { // ... }];
Opzione consigliata: impostare un criterio relativo alle password
Puoi migliorare la sicurezza degli account applicando i requisiti di complessità delle password.
Per configurare un criterio relativo alle password per il tuo progetto, apri la scheda Criterio relativo alle password nella pagina Impostazioni di autenticazione della console Firebase:
Impostazioni di autenticazione
Firebase Authentication criteri relativi alle password supportano i seguenti requisiti per le password:
Carattere minuscolo obbligatorio
Carattere maiuscolo obbligatorio
Carattere numerico obbligatorio
Carattere non alfanumerico obbligatorio
I seguenti caratteri soddisfano il requisito dei caratteri non alfanumerici:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~Lunghezza minima della password (da 6 a 30 caratteri; il valore predefinito è 6)
Lunghezza massima della password (lunghezza massima di 4096 caratteri)
Puoi attivare l'applicazione dei criteri relativi alle password in due modalità:
Richiedi: i tentativi di accesso non vanno a buon fine finché l'utente non aggiorna una password conforme ai criteri.
Invia notifica: gli utenti possono registrarsi con una password non conforme. Quando utilizzi questa modalità, devi verificare se la password dell'utente è conforme ai criteri sul lato client e chiedere all'utente di aggiornare la password se non è conforme.
I nuovi utenti sono sempre tenuti a scegliere una password conforme ai criteri.
Se hai utenti attivi, ti consigliamo di non attivare l'upgrade forzato all'accesso, a meno che tu non intenda bloccare l'accesso agli utenti le cui password non sono conformi ai criteri. Utilizza invece la modalità di notifica, che consente agli utenti di accedere con le password attuali e li informa dei requisiti mancanti della password.
Opzione consigliata: attivare la protezione da enumerazione email
Alcuni metodi Firebase Authentication che accettano indirizzi email come parametri generano errori specifici se l'indirizzo email non è registrato quando deve essere registrato (ad esempio, quando si accede con un indirizzo email e una password) o registrato quando non deve essere utilizzato (ad esempio, quando si modifica l'indirizzo email di un utente). Sebbene possa essere utile per suggerire rimedi specifici agli utenti, può anche essere utilizzato in modo illecito da malintenzionati per scoprire gli indirizzi email registrati dagli utenti.
Per ridurre questo rischio, ti consigliamo di attivare la protezione da enumerazione email
per il tuo progetto utilizzando lo strumento gcloud di Google Cloud. Tieni presente che l'attivazione di questa
funzionalità modifica il comportamento di segnalazione degli errori di Firebase Authentication: assicurati che la tua app
non si basi sugli errori più specifici.
Passaggi successivi
Dopo che un utente ha eseguito l'accesso per la prima volta, viene creato un nuovo account utente e collegato alle credenziali, ovvero al nome utente e alla password, al numero di telefono o alle informazioni del provider di autenticazione con cui l'utente ha eseguito l'accesso. Questo nuovo account viene memorizzato come parte del progetto Firebase e può essere utilizzato per identificare un utente in ogni app del progetto, indipendentemente dalla modalità di accesso dell'utente.
-
Nelle tue app, puoi recuperare le informazioni di base del profilo dell'utente dall'
Useroggetto. Consulta Gestire gli utenti. Nelle Firebase Realtime Database e Cloud Storage Regole di sicurezza, puoi recuperare l'ID utente univoco dell'utente che ha eseguito l'accesso dalla variabile
auth, e utilizzarlo per controllare i dati a cui un utente può accedere.
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 codice di gestione degli errori per l'intera gamma di errori di autenticazione. Consulta Gestire gli errori.