Introduzione

Quanti conoscono OpenID? OpenID permette di eseguire il login su un sito, senza obbligare l'utente a fare una registrazione. L'utente si può collegare al sito con pochissimi click. Chi fornisce questo servizio? Ci sono parecchi provider tra i quali Google e Yahoo. Purtroppo non tutte le persone che conosco hanno un account su Google o Yahoo e obbligare i miei amici a crearne uno per accedere al mio sito, beh nessuno avrebbe fatto il login. Quindi ho deciso di puntare su Facebook, che non offre direttamente lo standard OpenID, ma offre qualcosa di simile.

Scopo

Il mio obbiettivo é quello di permettere solo ai miei amici di Facebook di accedere a una parte del mio sito fatto in Joomla.

L'estensione

Visto che non sono un programmatore ma un semplice appassionato ho cercato un po' qualche estensione che potesse svolgere gran parte del "lavoro". Chi cerca trova ed ecco un estensione che fa proprio al caso mio: jConncetor. Scarichiamola e installiamola. La prima parte dell'installazione avviene senza problemi, nel mio caso però per riuscire a far funzionare il tutto (applicazione Facebook e estensione) ho dovuto cercare nel forum, per eseguire qualche passo in più manuale. In particolare se vi appare un errore nel modulo e un errore 403 quando cliccate sul bottone di Connect.
  • permessi 755 sulla cartella del modulo (mod_jconnector)
  • aggiungere un file vuoto dal nome "install.done" nella cartella del modulo
  • nelle configurazioni globali del sito dev'essere possibile aggiungere utenti (workaround spiegato qui)

L'aggiunta

Adesso arriva la modifica del codice e il divertimento. Le modifiche al codice che sto per descrivere sono basate sulla versione 1.1 (che ho salvato qui per sicurezza).

il primo file da modificare é mod_jconnector.xml, qui aggiungiamo una casella per la configurazione del module che ci permette di aggiungere il tuo ID di Facebook. Nel tag <params> ho aggiunto la seguente riga di codice:

<param name="myfbid" type="text" default="" label="My Facebook ID" description="MYFBID" />

Adesso se vai nella parte di amministrazione del tuo sito e vai nelle configurazione di un modulo di jConnector troverai la nuova casella.

Ora tocca al cuore del modulo, é ora di modificare il file jconnector_server.php. Non posso spiegare tutte le piccole modifiche fatte in questo file, perciò qui puoi scaricare quello che ho fatto. Ci tengo però a spiegare brevemente la parte principale del codice aggiunto in particolare questo punto:


...
if(!$user_data) //we don't have this FB user in our DB yet
{
$amico = $facebook->api_client->friends_areFriends($fb_uid, $module_params['myfbid']);
if ($amico[0][are_friends] || ($fb_uid == $module_params['myfbid']))
{ ...
Il primo IF era già presente, la funzione successima controlla tramite il collegamento di Facebook se l'utente attuale ($fb_uid) é amico mio ($module_params['myfbid']) letto direttamente dalla configurazione. Il risultato viene testato nel IF successivo, che ha anche un test aggiuntivo per verificare che la persona loggata sono io.

Queste prove vengono eseguite solo se l'utente non é registrato nel DB di Joomla, quindi un amico che si logga lo potrà fare anche in futuro, anche se non siete più amici in Facebook. L'eliminazione dev'essere fatta dal menu di Joomla manualmente.

Prima di modificare qualsiasi file vi consiglio di eseguire una copia di backup. Non si sa mai...


Il mio ID di Facebook?

Il metodo più semplice e funzionante che ho trovato é quello di scommentare queste righe di codice ed eseguire un login con il proprio account. Il numero che ti apparirà sullo schermo é il tuo ID, copiale e salvalo nel modulo.

//echo ($fb_uid);
//die;

Redirect dopo il login

Piccola aggiunta al file jconnector_server.php, rimpiazzate questa riga

header('Location: '.str_replace('modules/mod_jconnector/', '', JURI::base()));
con questa

if ($noamico)
{
header('Location: '.str_replace('modules/mod_jconnector/', '', 'http://
link-in-caso-di-problemi'));
}
else
{
header('Location: '.str_replace('modules/mod_jconnector/', '', 'http://link-in-caso-di-successo'));
}
Cosi da poter dirigere i mostri utenti sulla pagina giusta dopo il login o il mancato login.



Buon divertimento! Se hai feedback, Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.!



Fotografie

Ultimi album aggiunti

Twitter