In questo ciclo di lezioni, verranno illustrati i passi che permettono di integrare Firebase nelle proprie applicazioni Android e iOS. In particolare, in questa lezione introdurremo Firebase illustrando i suoi principali servizi.
Firebase è una piattaforma Backend-as-a-Service (BaaS) che offre ai propri sviluppatori la possibilità di sviluppare applicazioni di qualità attraverso l’utilizzo di molteplici servizi real-time.
Nata nel 2011 come startup con il nome Envolve, solo nel 2012 prende vita come piattaforma BaaS con il nome di Firebase per essere acquistata qualche anno più tardi da Google, nel 2014. Da allora Firebase si è rapidamente evoluta offrendo sempre più servizi e rendendo più semplice la definizione di un backend scalabile in base alle esigenze dell’applicazione. In particolare, la piattaforma offre un’ampia gamma di servizi per la risoluzione di problematiche comuni nello sviluppo di un’applicazione mobile, come ad esempio il social login, il report dei crash, la creazione di un backend reattivo, etc.
Come mostrato nella figura più sotto, i servizi offerti da Firebase sono suddivisi in due macro categorie:
Categoria | Descrizione |
---|---|
Develop & test your app | Insieme di servizi per sviluppare e testare la propria applicazione, come hosting, realtime database, monitoraggio delle performance |
Grow & engage your audience | Servizi per far crescere e monitorare il proprio bacino di utenza, indicizzazione dei contenuti dell’app, e servizi di monetizzazione |
Per maggiori dettagli sui servizi offerti, è possibile consultare la documentazione ufficiale dei vari prodotti.
La piattaforma offre diversi piani tariffari adatti a tutte le esigenze. In particolare, è disponibile un piano tariffario gratuito che permette fin da subito di usufruire dei principali servizi necessari ad un’applicazione mobile (es. login, Crashlytics, e App Indexing). Al contrario, servizi come Realtime Database e Cloud Firestore sono disponibili ma con restrizioni legate al piano tariffario scelto. Per ulteriori dettagli, si rimanda alla sezione pricing della piattaforma.
Firebase Authentication
Nelle precedenti lezioni, sono stati illustrati i passi per integrare un sistema di autenticazione all’interno di una nuova app sfruttando le SDK e API native delle varie piattaforme social. Come si è potuto notare, l’integrazione del social login si compone di diverse operazioni che sono simili tra le piattaforme social. Ciononostante, il comportamento di queste differisce in base alla piattaforma da utilizzare, richiedendo l’aggiunta di codice specifico per gestire il login e il logout o più semplicemente per gestire le informazioni degli utenti. Inoltre, come spesso accade, è necessario fornire più scelta all’utente finale e offrire l’autenticazione attraverso più sistemi di social login, oltre a prevedere un fallback (registrazione tramite email e password) nel caso in cui l’utente non voglia legare le sue informazioni social alla piattaforma. Tutti aspetti che possono essere risolti mediante un approccio classico definendo un modulo di login ben strutturato che, però, richiede tempi di sviluppo più lunghi.
È qui che entra in gioco Firebase!
Un aspetto decisamente interessante di Firebase, e che ha conquistato il mondo mobile, è l’offerta di un servizio per la costruzione di sistemi di autenticazione sicuri in modo semplice e veloce, che permette agli sviluppatori di autenticare gli utenti tramite diversi approcci. In particolare, per rispondere alle molteplici esigenze degli sviluppatori, Firebase supporta le seguenti soluzioni:
Soluzione | Descrizione | Piattaforme supportate |
---|---|---|
Drop-in authentication | È il metodo consigliato per aggiungere un sistema di autenticazione completo ed esaustivo per l’utente finale. Ciò è reso possibile dal componente FirebaseUI, che fornisce una soluzione di autenticazione drop-in in grado di gestire i flussi della UI per l'accesso degli utenti tramite e-mail e password, social login, ecc. Inoltre, questo componente può essere facilmente personalizzato per adattarlo allo stile dell’app | iOS, Android, Web |
Autenticazione tramite e-mail e password | Il servizio crea e gestisce gli utenti che si registrano tramite email e password, fornendo meccanismi di recupero della password stessa | iOS, Android, Web, C++, Unity |
Social login (integrazione dei Federated identity provider) | Firebase offre il login tramite le principali piattaforme social che abbiamo visto nel corso di questa guida e a cui si aggiunge anche GitHub | iOS, Android, Web, C++, Unity |
Autenticazione tramite numero di telefono | Il servizio permette l’autenticazione degli utenti tramite l’invio di un SMS al numero di telefono. Questa è l’unica opzione di Firebase Authentication a non essere inclusa nel pacchetto free | iOS, Android, Web |
Integrazione di sistemi di autenticazione custom | Se si dispone già di un servizio di autenticazione, è possibile connetterlo a Firebase e accedere così agli altri servizi, come Firebase Realtime Database | iOS, Android, Web, C++, Unity |
Autenticazione anonima | Firebase introduce la possibilità di creare utenze temporanee anonime per permettere agli utenti di accedere ai servizi che richiedono un’autenticazione. Le utenze anonime possono diventare delle utenze normali nel momento in cui l’utente decide di iscriversi. | iOS, Android, Web, C++, Unity |
Tutto ciò è reso possibile dall’utilizzo degli standard del settore come OAuth 2.0 e OpenID Connect che sono ampiamente supportati da Firebase Authentication, rendendolo così un servizio facile da integrare anche in presenza di un backend già esistente.