2012-04-27 19 views
0

我正在使用Facebook Oauth。我的应用程序在iframe中。以下是我最初的Oauth网址:Facebook Oauth在IE和Firefox的Iframe中失败

https://graph.facebook.com/oauth/authorize?client_id=XXXXX&redirect_uri=XXXX&scope=offline_access,publish_stream

REDIRECT_URI为https。

在IE8我收到以下错误页:

[最初,它显示转至Facebook.com链接] [1]

[然后它显示下面的错误页] [2]

此内容不能显示在框架中

在Firefox中,它显示空的白页。因此,Facebook Oauth在IE以及Firefox中都不起作用。我确实在您的网站上找到了一些帖子。但那些帮助我解决了我的问题。

+0

您的网站是否可以在任何浏览器中使用?我的理解是,你不能在iframe中执行FB oauth。 – chesles 2012-04-27 20:49:18

+0

不,它不适用于任何浏览器。但去年它在所有浏览器中都能正常工作。 Facebook在iframe中更改了Oauth的任何内容吗? – Mahesh 2012-04-30 07:13:11

+0

是的 - 他们因为潜在的剥削而停止了​​它,除非我错了。 – chesles 2012-04-30 13:54:43

回答

3

根据https://developers.facebook.com/docs/reference/dialogs/

IFRAME:对于Facebook上的画布页面中的iframe中运行时的应用程序使用。在lightbox风格叠加层中显示对话框。由于点击劫持的风险,这只适用于某些特定的对话框,并且要求您传递有效的access_token。 该模式不受OAuth对话框支持。

即使你没有指定iframe作为显示类型,你是装的iframe内的对话,而Facebook这个检测,以防止点击劫持。解决此

的一个好方法是打开一个处理身份验证的弹出窗口:

<script type="text/javascript"> 
window.open('https://www.facebook.com/dialog/oauth?display=popup&client_id=...'); 
</script> 

或类似的东西(打开你的网站的URL做重定向等)。