Questo è un post della serie “Guest post” che ospita autori esterni al team di MSDN Italia.
Questo post è stato scritto da Davide Senatore, MVP di cui potete leggere articoli oltre che dal suo blog anche sulla community XeDotNet.
DotNetNuke e Facebook: forse possono sembrare due mondi molto distanti tra loro, ma non è così. L’integrazione tra i due sistemi, integrazione che consente di registrare ed autenticare un utente di DNN sulla base del suo account Facebook, è fattibile e alla portata di tutti. Vediamo innanzitutto di descrivere le due piattaforme e di capire come questa integrazione sia possibile.
DotNetNuke è un Content Management System, ma molto prima di essere un CMS è un Framework. Esso mette a disposizione dello sviluppatore una serie di API di base (Autenticazione, Gestione security, eventlog, scheduling, gestione utenti, advertising e molto molto altro) che possono essere utilizzate per costruire virtualmente qualsiasi cosa. Personalmente amo immaginare DNN come una grossa scatola di Lego con molti mattoncini complessi che possono essere combinati a piacere, senza dover “reinventare la ruota” ogni volta che si affronta un nuovo progetto. Le possibilità offerte da questo framework sono infinite grazie alla semplicità con la quale si possono integrare nuovi moduli sviluppati con ASP.net in linguaggio C# o VB.net. Lo sviluppo di un modulo, infatti, consente di connettersi ad un altro database, inviare mail, connettersi a web services e, più generalmente, di implementare qualunque funzione si desideri all’interno del Framework di DNN.
I pregi di questo approccio sono dati da una velocità di sviluppo di web applications che non ha pari. Un solo sviluppatore con un buon skill su ASP.net può realizzare funzionalità che avrebbero altrimenti richiesto mesi e molte persone per essere create. Inoltre la possibilità di creare skin personalizzate, l’integrazione totale con jQuery ed una generale “sensibilità” agli standard del web permettono la creazione di web applications assolutamente cross-browser.
Facebook non ha bisogno di presentazioni. È IL Social Network. Con i suoi milioni di utenti è diventato lo Standard “de facto” della Socializzazione sul web e viene sempre più utilizzato per effettuare autenticazioni su siti di terze parti.
Di fatto, l’utilizzo dell’autenticazione integrata con Facebook elimina la barriera all’ingresso del nostro sito, rendendo più semplice ed appetibile la registrazione ai nuovi utenti. In pratica questa tecnica consente al nostro utente di:
Se il nostro obiettivo è sviluppare un Social Network, non possiamo ignorare l’autenticazione e l’integrazione con Facebook.
Facebook, da parte sua, mette a disposizione una ricchissima API REST che può essere utilizzata non solo per effettuare l’autenticazione, ma anche per condividere informazioni sulla propria bacheca, inviare messaggi ai propri amici, pubblicare foto e molto altro. L’utilizzo di REST+JSON consente di invocare i servizi di Facebook da qualunque dispositivo ed in particolare da un’altra web application.
Si possono trovare maggiori informazioni e documentazione attinenti all’autenticazione e alle chiamate REST su http://developers.facebook.com/
Come si può vedere, per implementare l’autenticazione su Facebook è sufficiente:
Prestiamo particolare attenzione al fatto che nel nostro sito NON verranno mai richieste, né salvate le credenziali dell’utente di Facebook, pertanto sia lo Username che la Password verranno inserite in un contesto https sotto il controllo di Facebook. L’unica risorsa che verrà condivisa tra la nostra applicazione e Facebook è un token di sessione.
DotNetNuke, come del resto qualunque altra Web Application, può essere integrata con Facebook utilizzando le librerie per ASP.net disponibili su Codeplex:
In DotNetNuke, l’autenticazione integrata con Facebook si basa sull’utilizzo delle API di base della security di DNN, ovvero delle routine per la creazione di un utente e del metodo (UserLogin) per effettuare la login. In pratica, dopo aver effettuato la chiamata alla nostra “Facebook Application” e dopo che l’utente avrà accettato di condividere alcune informazioni con la nostra applicazione, verrà fatta una chiamata alla nostra web application e noi dovremo, nell’ordine:
Un esempio di integrazione tra Facebook e DNN si può vedere nel mio progetto di Social Network per lo Sport ed i Centri Sportivi gymmit.com (http://www.gymmit.com).
Gymmit è il Social Network per lo Sport, Centri Sportivi, Palestre, Piscine ed ha come mission la promozione di uno stile di vita sano e la diffusione della mentalità del “Social Wellness” ovvero della pratica dello sport in compagnia o come mezzo per fare nuove amicizie o trovare persone che possano aiutarci ad iniziare a praticare uno sport che ci attira ma che non siamo mai stati in grado di affrontare. Le funzionalità di Gymmit sono moltissime e annoverano:
In questo caso, avendo implementato un intero Social Network, era assolutamente necessario introdurre una forma di autenticazione/registrazione integrata con facebook, essendo la maggior parte degli utenti già presenti nel più diffuso Social Network. Questa integrazione, infatti, consente di eliminare le remore, le diffidenze e quella “barriera” all’ingresso che rappresenta l’ostacolo principale in ogni sito che offra servizi previa registrazione dell’utente.
DotNetNuke si è rivelato estremamente flessibile e personalizzabile e l’integrazione stessa è stata piuttosto agevole, grazie anche alla produttività offerta da Visual Studio ed alle tecniche di sviluppo di moduli di DotNetNuke “esterne” al core del progetto DNN stesso, che assicurano semplicità di testing delle funzionalità custom e facilità di deployment in produzione.