Inizia con l'autenticazione Firebase sulle piattaforme Apple

Puoi utilizzare l'autenticazione Firebase per consentire agli utenti di accedere alla tua app utilizzando uno o più metodi di accesso, tra cui l'accesso tramite indirizzo e-mail e password, e provider di identità federati come Accesso Google e Accesso Facebook. Questo tutorial ti introduce all'autenticazione Firebase mostrandoti come aggiungere l'indirizzo email e l'accesso tramite password alla tua app.

Collega la tua app a Firebase

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

Aggiungi l'autenticazione Firebase 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 .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Scegli la libreria di autenticazione Firebase.
  5. Aggiungi il flag -ObjC alla sezione Altri flag del linker delle impostazioni di build del tuo target.
  6. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

(Facoltativo) Prototipa e testa 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 fornitori 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, poter lavorare localmente senza distribuire servizi live può essere un'ottima idea .

Un emulatore di autenticazione fa parte di Local Emulator Suite, che consente alla tua 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 prevede solo pochi passaggi:

  1. Aggiunta di una riga di codice alla configurazione di test della tua app per connettersi all'emulatore.
  2. Dalla radice della directory del progetto locale, eseguendo firebase emulators:start .
  3. Utilizzando l'interfaccia utente di Local Emulator Suite per la prototipazione interattiva o l'API REST dell'emulatore di autenticazione per test non interattivi.

Una guida dettagliata è disponibile in Connetti la tua app all'emulatore di autenticazione . Per ulteriori informazioni, vedere l' introduzione alla 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 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 della tua app che richiedono informazioni sull'utente che ha effettuato l'accesso, collega un ascoltatore all'oggetto FIRAuth . Questo ascoltatore viene chiamato ogni volta che cambia lo stato di accesso dell'utente.

Collega il listener al 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 scollega il listener nel metodo viewWillDisappear del controller di visualizzazione:

Veloce

Auth.auth().removeStateDidChangeListener(handle!)

Obiettivo-C

[[FIRAuth auth] removeAuthStateDidChangeListener:_handle];

Iscrivi nuovi utenti

Crea un modulo che consenta ai nuovi utenti di registrarsi alla tua app utilizzando il proprio 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 :

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 email e la 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 effettuato l'accesso correttamente, è possibile ottenere informazioni sull'utente. Ad esempio, nel tuo ascoltatore 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 ospite anonimi: