Inizia a utilizzare Firebase Authentication sulle piattaforme Apple

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 provider di identità federati come Accedi con Google e Accedi con Facebook. Questo tutorial ti aiuta a iniziare a utilizzare Firebase Authentication mostrandoti come aggiungere l'accesso con indirizzo email e password alla tua app.

Connetti la tua app a Firebase

  1. Installa l'SDK Firebase.
  2. Nella console Firebase, aggiungi la tua app al progetto Firebase.

Aggiungi Firebase Authentication alla tua app

Utilizza Swift Package Manager per installare e gestire le dipendenze di Firebase.

  1. In Xcode, con il progetto dell'app aperto, vai a File > Add Packages (File > Aggiungi pacchetti).
  2. Quando richiesto, aggiungi il repository dell'SDK delle piattaforme Apple di Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Scegli la libreria Firebase Authentication.
  5. Aggiungi il flag -ObjC alla sezione Other Linker Flags (Altri flag del linker) delle impostazioni di build del target.
  6. Al termine, Xcode inizierà automaticamente a risolvere e a scaricare le tue dipendenze in background.

(Facoltativo) Crea prototipi ed esegui test con Firebase Local Emulator Suite

Prima di parlare di come la tua app autentica gli utenti, introduciamo un insieme di strumenti che puoi utilizzare per prototipare e testare la funzionalità di 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 della UI di accesso, poter lavorare localmente senza eseguire il deployment di servizi live può essere un'ottima idea.

Un emulatore Authentication fa parte di Local Emulator Suite, che consente alla tua app di interagire con i contenuti e la configurazione del database emulati, nonché, facoltativamente, con le risorse del progetto emulate (funzioni, altri database e regole di sicurezza).

L'utilizzo dell'emulatore Authentication prevede solo pochi passaggi:

  1. Aggiungere una riga di codice alla configurazione di test dell'app per connetterti all'emulatore.
  2. Dalla directory root del progetto locale, esegui firebase emulators:start.
  3. Utilizzando la UI di Local Emulator Suite per la prototipazione interattiva o l'API REST dell'emulatore Authentication per i test non interattivi.

Una guida dettagliata è disponibile alla pagina Connetti l'app all'emulatore Authentication. Per saperne di più, consulta l'introduzione a Local Emulator Suite.

Ora continuiamo con l'autenticazione degli utenti.

Inizializza l'SDK Firebase

Nel delegato dell'app, importa innanzitutto 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 della tua 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 view controller:

Swift

handle = Auth.auth().addStateDidChangeListener { auth, user in
  // ...
}

Objective-C

self.handle = [[FIRAuth auth]
    addAuthStateDidChangeListener:^(FIRAuth *_Nonnull auth, FIRUser *_Nullable user) {
      // ...
    }];

Scollega il listener nel metodo viewWillDisappear del view controller:

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 compila 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) {
  // ...
}];

Consentire l'accesso agli utenti esistenti

Crea un modulo che consenta agli utenti esistenti di accedere utilizzando il proprio indirizzo email e la propria password. Quando un utente compila 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, 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: