Puoi utilizzare l'autenticazione Firebase per consentire agli utenti di accedere alla tua app utilizzando uno o più metodi di accesso, inclusi l'accesso tramite indirizzo e-mail e password, e provider di identità federati come Accesso Google e Accesso Facebook. Questo tutorial ti consente di iniziare con l'autenticazione Firebase mostrandoti come aggiungere l'indirizzo e-mail e la password di accesso alla tua app.
Collega la tua app a Firebase
- Installa l'SDK Firebase .
- Nella console Firebase , aggiungi la tua app al tuo progetto Firebase.
Aggiungi l'autenticazione Firebase alla tua app
Usa Swift Package Manager per installare e gestire le dipendenze di Firebase.
- In Xcode, con il progetto dell'app aperto, vai su File > Aggiungi pacchetti .
- Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
- Scegli la libreria di autenticazione Firebase.
- Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.
https://github.com/firebase/firebase-ios-sdk
(Facoltativo) Prototipazione e test con Firebase Local Emulator Suite
Prima di parlare di come la tua app autentica gli utenti, introduciamo una serie di strumenti che puoi utilizzare per prototipare e testare la funzionalità di autenticazione: Firebase Local Emulator Suite. Se stai decidendo tra tecniche e provider di autenticazione, provando diversi modelli di dati con dati pubblici e privati utilizzando l'autenticazione e le regole di sicurezza Firebase o prototipando progetti di interfaccia utente di accesso, essere in grado di lavorare localmente senza distribuire servizi live può essere un'ottima idea .
Un emulatore di autenticazione fa parte di Local Emulator Suite, che consente all'app di interagire con il contenuto e la configurazione del database emulato, nonché facoltativamente con le risorse del progetto emulato (funzioni, altri database e regole di sicurezza).
L'utilizzo dell'emulatore di autenticazione richiede solo pochi passaggi:
- Aggiunta di una riga di codice alla configurazione di test dell'app per la connessione all'emulatore.
- Dalla radice della directory del tuo progetto locale, eseguendo
firebase emulators:start
. - Utilizzo dell'interfaccia utente di Local Emulator Suite per la prototipazione interattiva o dell'API REST dell'emulatore di autenticazione per test non interattivi.
Una guida dettagliata è disponibile all'indirizzo Collega la tua app all'emulatore di autenticazione . Per ulteriori informazioni, vedere l' introduzione di Local Emulator Suite .
Ora continuiamo con come autenticare gli utenti.
Inizializza l'SDK Firebase
Nel delegato dell'app, importa prima l'SDK Firebase:
Veloce
import FirebaseCore
Obiettivo-C
@import FirebaseCore;
Quindi, nel metodo application:didFinishLaunchingWithOptions:
inizializza l'oggetto FirebaseApp
:
Veloce
// Use Firebase library to configure APIs
FirebaseApp.configure()
Obiettivo-C
// Use Firebase library to configure APIs
[FIRApp configure];
Ascolta lo stato di autenticazione
Per ciascuna delle visualizzazioni dell'app che richiedono informazioni sull'utente che ha eseguito l'accesso, allega 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:
Veloce
handle = Auth.auth().addStateDidChangeListener { auth, user in
// ...
}
Obiettivo-C
self.handle = [[FIRAuth auth]
addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
// ...
}];
E stacca il listener nel metodo viewWillDisappear
del controller di visualizzazione:
Veloce
Auth.auth().removeStateDidChangeListener(handle!)
Obiettivo-C
[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];
Registra nuovi utenti
Crea un modulo che consenta ai nuovi utenti di registrarsi con la tua app utilizzando il loro indirizzo e-mail e una password. Quando un utente compila il modulo, convalida l'indirizzo e-mail e la password forniti dall'utente, quindi passali al metodo createUser
:
Veloce
Auth.auth().createUser(withEmail: email, password: password) { authResult, error in
// ...
}
Obiettivo-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 proprio indirizzo e-mail e password. Quando un utente completa il modulo, chiama il metodo signIn
:
Veloce
Auth.auth().signIn(withEmail: email, password: password) { [weak self] authResult, error in
guard let strongSelf = self else { return }
// ...
}
Obiettivo-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, puoi ottenere informazioni sull'utente. Ad esempio, nel listener dello stato di autenticazione :
Veloce
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 += " "
}
// ...
}
Obiettivo-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;
// ...
}
Prossimi passi
Scopri come aggiungere il supporto per altri provider di identità e account guest anonimi: