Sto sviluppando un’applicazione web in NodeJS e AngularJS, ovvero un’applicazione PageTab su Facebook.
Per il login sto usando la libreria Passport-facebook .
Il mio middleware è:
passport.authenticate('facebook', { display: 'popup', scope: ['read_stream', 'publish_actions', 'email', 'user_photos'] })
L’applicazione funziona se sono fuori dalla scheda di Facebook, ma quando provo nella scheda di Facebook, ottengo un errore:
[Error] Refused to display'Http....'in a frame because it set 'X-Frame-Options' to 'DENY'. (login, line 0) [Error] SecurityError: DOM Exception 18: An attempt was made to break through the security policy of the user agent.
Poiché la facebook permission dialog
non può essere avviata da un iFrame
Cosa posso fare per correggere, mantenendo la gestione delle sessioni con la strategia del passaporto?
Alla fine quello che ho fatto:
authorize.html
ho window.top.location = window.location + "auth/facebook";
Passport.authenticate("facebook", { successRedirect: "/", failureRedirect: "/login" } )
Ho fatto Passport.authenticate("facebook", { successRedirect: appHomePage, failureRedirect: appHomePage } )
con appHomePage
impostato su l’URL assoluto dell’app Facebook (ad es. https://apps.facebook.com/8480657996/
Si noti che è utile utilizzare le vars di ambiente per codificare con hard disk la home page dell’app nella propria app