Quello che voglio mostrare in questo articolo è la possibilità di determinare tramite puro Javascript (ed in appena 4 righe di codice) se un utente è loggato o meno a Facebook.
Ciò potrebbe essere utile per proporre dei contenuti diversi quando l’utente visita la nostra pagina web, in relazione al fatto che l’utente sia loggato o meno.
Va premesso che Facebook fornisce uffcialmente dei comodi ed esaustivi SDK Javascript e PHP per fare questo tipo di operazioni, ma che l’utilizzo di questi strumenti comporta alcuni passi obbligatori che sebbene possano andare più che bene per la maggior parte degli utenti, potrebbe non andare bene a chi vorrebbe farne un uso “diverso”.
- L’utente deve registrare un applicazione a cui sarà associata un APPID univoca.
- L’utente che naviga deve aver accettato precedentemente il consenso per l’applicazione
- A livello applicativo il webmaster deve portarsi dietro tutto il framework configurato su misura per quella applicazione.
Ma se volessimo “SOLO” sapere se l’utente sia loggato a Facebook nel momento in cui naviga sulla nostra pagina ?
Premesso che non ci interessa sapere nulla di più e nulla di meno se risulta loggato, senza dover dunque registrare nessuna applicazione Facebook e senza far interagire minimamente il visitatore con le applicazioni Facebook.
Il modo migliore è quello di usare i codici di stato di risposta del Webserver.
L’idea alla base è quella che alcune pagine di Facebook possano ritornare un codice di stato differente se si è loggati o meno.
Se ad esempio si crea un profilo Facebook visibile solo agli utente correntemente loggati su Facebook quando un utente NON loggato tenterà di vedere il profilo privato riceverà uno stato HTTP di errore di tipo 404.
Viceversa quando un utente loggato cercherà di visualizzare il profilo privato otterrà uno stato HTTP di tipo OK, cioè 200.
Tutto quello che bisogna fare dunque è di caricare l’url di un profilo privato (che volendo potremmo creare maliziosamente fasullo appositamente per lo scopo) in un tag di tipo script e agganciarci l’evento onload() e onerror().
Se si verificherà l’errore (ovvero la restituzione di un codice di stato HTTP di tipo 404) l’utente non è loggato a FB e stamperà a video il messaggio “Non Loggato a Facebook”.
Se si verificherà l’evento onload() (è stato ricevuto un codice di stato HTTP di tipo 200) l’utente è correntemente loggato a FB e stamperà a video il messaggio “Non Loggato a Facebook”.
Il codice è molto semplice e banale ma di reale efficacia, visionabile in questo esempio caricato su jsFiddle :
Ciao, il tuo consiglio funziona ma avrei 2 domande..
1) perché la console javascript dà questo errore?
Refused to execute script from ‘https://www.facebook.com/people/Jens-L%C3%83%C2%BCbberstedt/1009310897’ because its MIME type (‘text/html’) is not executable, and strict MIME type checking is enabled
2) non c’è il pericolo che facebook prenda sott’occhio il profilo inserito nello script o l’indirizzo del sito da cui proviene, nel caso in cui ci fossero migliaia di accessi al giorno tramite questo sistema?