2012-04-27 27 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做重定向等)。