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 Firebase console.
-
Attiva Email/Password come provider di accesso per il tuo progetto Firebase:
- Nella console Firebase, vai a Sicurezza > Autenticazione.
- Nella scheda Metodo di accesso, attiva il provider di accesso Email/password.
- 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 passaggi di convalida del nuovo account richiesti dall'app, ad esempio verificando 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 con un indirizzo email e una password
I passaggi per accedere 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 per le password
Puoi migliorare la sicurezza degli account applicando i requisiti di complessità delle password.
Per configurare un criterio per le password per il tuo progetto, apri la sezione Criterio per le password nella scheda Sicurezza > Autenticazione > Impostazioni della Firebase console:
Impostazioni di autenticazione
Firebase Authentication criteri per le 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 per le password in due modalità:
Richiedi: i tentativi di registrazione non vanno a buon fine finché l'utente non aggiorna la password in modo che sia conforme ai tuoi criteri.
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 tuoi 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 tuoi 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 che accettano indirizzi email come parametri generano errori specifici se l'indirizzo email non è registrato quando deve esserlo (ad esempio, quando si accede con un indirizzo email e una password) o se è registrato quando non deve esserlo (ad esempio, quando si modifica l'indirizzo email di un utente).Firebase Authentication 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 dai tuoi 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 tuo progetto Firebase e può essere utilizzato per identificare un utente in ogni app del tuo 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.