Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Inizia con l'autenticazione Firebase sulle piattaforme Apple

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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

  1. Installa l'SDK Firebase .
  2. 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.

  1. In Xcode, con il progetto dell'app aperto, vai su File > Aggiungi pacchetti .
  2. Quando richiesto, aggiungi il repository SDK delle piattaforme Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Scegli la libreria di autenticazione Firebase.
  5. Al termine, Xcode inizierà automaticamente a risolvere e scaricare le tue dipendenze in background.

(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 ​​usando 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:

  1. Aggiunta di una riga di codice alla configurazione di test dell'app per la connessione all'emulatore.
  2. Dalla radice della directory del tuo progetto locale, eseguendo firebase emulators:start .
  3. 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: