由于X-Frame-Options阻止显示,拒绝显示文档。

23
我正在构建一个Facebook应用程序,使用他们的Javascript API获取用户的登录状态时,我发现有时会出现以下错误:“Refused to display document because display forbidden by X-Frame-Options.” 我已经能够重现这个问题,只要我在应用程序的“检查登录状态”页面上使用Facebook页面而不是我的用户帐户。现在我知道了原因并能够避免,但很明显我的用户可能不知道这个问题。
有没有一种方法可以确定用户是否在Facebook页面上使用,以便我尽早解决这个问题?毕竟它会影响到我的整个应用程序。

请问您能否确认您的channel.htm文件是否按预期工作? - DMCS
3个回答

1
当Facebook从Web浏览器重定向到您的应用程序,然后您将其重定向到Facebook授权登录时,会出现问题。您必须确保表单替换页面而不是加载到Facebook画布中,因为它不喜欢这样做。
因此,您必须进行干净的重定向,例如 - 这是Node示例。
res.send("<script> top.location.href='"+ "https://www.facebook.com/dialog/oauth?    
client_id=*********&redirect_uri=http://apps.facebook.com/myapp" + "'</script>");

请看这个 Facebook 开发者页面,它在第三步。

https://developers.facebook.com/docs/howtos/login/server-side-login/

似乎移动应用程序没有问题,只有桌面版存在问题。

1
我也遇到了这个问题,通过以下方式解决: 应用程序从Facebook(auth对话框)重定向用户到登录屏幕,而用户已经登录。 因此,我更改了代码,如果已登录,则重定向到成功页面,否则重定向到对话框。

4
如果他没有解释他是如何做到的,为什么他会得到绿色勾勾呢? - Ian Steffy

0

这个 JavaScript 代码有效吗?

document.write(isFacebookPage()?"YES, I'm in a Facebook Page!":"No, not a Facebook Page");

function isFacebookPage(){
    return (document.location.href.indexOf('/pages/')>0);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接