我正在开发一个NodeJS和AngularJS的Web应用程序,这是一个PageTab应用程序到Facebook。节点Passport-Facebook登录Facebook页面选项卡应用程序
对于登录,我正在使用库Passport-facebook。
我中间件是:
passport.authenticate('facebook', {
display: 'popup',
scope: ['read_stream', 'publish_actions', 'email', 'user_photos']
})
申请工作,如果我是Facebook上的标签外,但是当我试图进入Facebook标签, 我得到一个错误:
[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.
因为facebook permission dialog
无法从iFrame启动
我该如何解决,保持会话管理与护照策略?
出于安全原因,登录对话框无法显示在任何类型的(i)框架中 - 必须在顶层窗口实例中调用登录对话框如果您使用的框架确实不提供方法实现这一点,那么我认为你唯一的选择是在触发登录之前(使用'top.location.href =“...”')在页面标签页中跳出iframe,在顶层窗口实例中登录,然后重定向之后回到页面标签地址。 – CBroe 2014-09-25 11:47:30
谢谢,我也做了,所以我希望这是一个很好的解决方案:) – jay 2014-09-25 12:55:59