Puoi utilizzare Firebase Authentication per consentire agli utenti di accedere alla tua app utilizzando uno o più metodi di accesso, tra cui l'accesso con indirizzo email e password e i provider di identità federata come Accedi con Google e Facebook Login. Questo tutorial ti aiuta a iniziare a utilizzare Firebase Authentication mostrandoti come aggiungere l'accesso con indirizzo email e password alla tua app.
Connetti l'app a Firebase
- Installa l'SDK Firebase.
- Nella Firebase console, aggiungi l'app al progetto Firebase.
Aggiungi Firebase Authentication alla tua app
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
(Facoltativo) Crea prototipi ed esegui test con Firebase Local Emulator Suite
Prima di parlare di come la tua app autentica gli utenti, presentiamo un insieme di strumenti che puoi utilizzare per creare prototipi e testare la funzionalità Authentication Firebase Local Emulator Suite. Se stai scegliendo tra tecniche e provider di autenticazione, provando diversi modelli di dati con dati pubblici e privati utilizzando Authentication e Firebase Security Rules, o creando prototipi di design dell'interfaccia utente di accesso, può essere una buona idea poter lavorare localmente senza eseguire il deployment dei servizi live.
Un emulatore Authentication fa parte di Local Emulator Suite, che consente alla tua app di interagire con i contenuti e la configurazione del database emulato, nonché facoltativamente, con le risorse del progetto emulato (funzioni, altri database e regole di sicurezza).
L'utilizzo dell'Authentication emulatore prevede solo alcuni passaggi:
- Aggiungere una riga di codice alla configurazione di test dell'app per connettersi all'emulatore.
- Eseguire
firebase emulators:startdalla directory principale del progetto locale. - Utilizzare l'interfthonLocal Emulator Suite UI per la creazione di prototipi interattivi o l'Authentication emulator API REST per i test non interattivi.
Una guida dettagliata è disponibile all'indirizzo Connetti l'app all'emulatore Authentication. Per ulteriori informazioni, consulta l'Local Emulator Suite introduzione.
Ora continuiamo con la procedura di autenticazione degli utenti.
Inizializza l'SDK Firebase
Nel delegato dell'app, importa prima l'SDK Firebase:
Swift
import FirebaseCore
Objective-C
@import FirebaseCore;
Poi, nel metodo application:didFinishLaunchingWithOptions:, inizializza l'oggetto FirebaseApp:
Swift
// Use Firebase library to configure APIs
FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs
[FIRApp configure];
Ascolta lo stato di autenticazione
Per ogni visualizzazione dell'app che richiede informazioni sull'utente che ha eseguito l'accesso, collega un listener all'oggetto FIRAuth. Questo listener viene chiamato ogni volta che lo stato di accesso dell'utente cambia.
Collega il listener nel metodo viewWillAppear del controller di visualizzazione:
Swift
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Objective-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
E scollega il listener nel metodo viewWillDisappear del controller di visualizzazione:
Swift
Auth.auth().removeStateDidChangeListener(handle!)
Objective-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Registra nuovi utenti
Crea un modulo che consenta ai nuovi utenti di registrarsi alla tua app utilizzando il loro indirizzo email e una password. Quando un utente completa il modulo, convalida l'indirizzo email e la password forniti dall'utente, quindi passali al metodo createUser:
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) {
// ...
}];
Accedi agli utenti esistenti
Crea un modulo che consenta agli utenti esistenti di accedere utilizzando il loro indirizzo email e la loro password. Quando un utente completa il modulo, chiama il metodo signIn:
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) {
// ...
}];
Ottieni informazioni sull'utente
Dopo che un utente ha eseguito l'accesso correttamente, puoi ottenere informazioni sull'utente. Ad esempio, nel listener dello stato di autenticazione:
Swift
if let user = user {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
var multiFactorString = "MultiFactor: "
for info in user.multiFactor.enrolledFactors {
multiFactorString += info.displayName ?? "[DispayName]"
multiFactorString += " "
}
// ...
}
Objective-C
if (user) {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
NSString *email = user.email;
NSString *uid = user.uid;
NSMutableString *multiFactorString = [NSMutableString stringWithFormat:@"MultiFactor: "];
for (FIRMultiFactorInfo *info in user.multiFactor.enrolledFactors) {
[multiFactorString appendString:info.displayName];
[multiFactorString appendString:@" "];
}
NSURL *photoURL = user.photoURL;
// ...
}
Passaggi successivi
Scopri come aggiungere il supporto per altri provider di identità e account ospite anonimi: