首页 文章

Facebook在canvas下运行时不显示身份验证

提问于
浏览
1

我有一个已经与Facebook登录集成的网站,使用服务器端身份验证 .

我有一个问题,把它变成一个在Facebook下运行的应用程序 .

The problem is that Facebook does not show the authentication page at all

因此,我甚至没有真正进入服务器身份验证过程 .

现在,应用程序正在我的本地计算机上运行 .

我的应用程序被定义为Facebook应用程序:(在localhost之前添加空白仅用于站点安全目的)

  • Canvas URL:http:// localhost:4300 / fbopt /

  • 安全画布URL:https:// localhost:4303 / fbopt /“

[在没有安全URL的情况下在沙盒中运行时会发生同样的问题]

我有一个“粉丝页面”,其中有“转到应用程序”按钮 . 按下按钮会将我引导至URL:https://apps.facebook.com/ [appid] /?fb_source = timeline

浏览器开始加载带有框架的页面 . 较低的帧对我提供的URL发出POST请求 .

我的应用程序将页面重定向到以下URL:

https://www.facebook.com/dialog/oauth?client_id=[appid]&redirect_uri=https://localhost:4303/fbopt/hook&scope=email,user_location,user_birthday

我希望Facebook能够显示应用程序身份验证表单,并具有所需的权限 .

不幸的是,这不会发生 . 框架内显示空白页面,HTML为空!

我看到(从Chrome网络调试器)确实访问了URL,但响应是HTTP 200状态(不是错误),但没有响应数据 . 相反,得到

X-Frame-Options:DENY

响应标头 - 在帧内呈现被拒绝!为什么?

当在Facebook框架结构之外“手动”加载URL时,我确实获得了具有正确权限的身份验证屏幕 .

我想知道是什么让它与canvas一起工作 .

任何暗示我应该添加什么,或如何调试这样的问题 - 将不胜感激 .

谢谢,马克斯

3 回答

  • 2

    看起来像我的根本问题是我试图重定向整个页面,而不是进行帧重定向 .

    从这里开始:Blank Canvas => 'Refused to display document because display forbidden by X-Frame-Options.'

    在这里:https://developers.facebook.com/docs/howtos/login/login-for-canvas/

    它说:

    因为您的应用程序正在iframe中加载,所以返回302以将用户重定向到Login Dialog将不会成功 . 相反,您必须通过设置Javascript window.top.location属性来重定向,这会导致父窗口重定向到登录对话框URL

    这可能是我的主要错误 .

    马克斯

  • 0

    你的应用程序中有 iframe 吗?使用内容 DENY 发送 X-Frame-Options 是Facebook与点击劫持战斗的方式 . 更多信息:

    http://darklaunch.com/2010/11/09/facebook-s-anti-clickjacking-techniques

    adding an iframe to facebook does not work anymore since ~2 weeks

  • 0

    我有同样的问题 . 302重定向有效,因为我使用了很多,但你无法出于任何原因重定向到facebook域 . 如果你想要你可以通过javascript进行顶级重定向 . 我做的是创建了一个接受URL的html,然后将它加载到top.location,然后重定向回apps.facebook.com . 使用X-frame很可能是因为你有一个AntiForgeryToken(如果使用.net),因为这会在 Headers 中插入xframe sameorigin . 你可以用它来禁用它

    AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
    

相关问题