2013-02-03 49 views
1

我有一個網站已經與Facebook登錄集成,使用服務器端身份驗證。Facebook在畫布下運行時不顯示身份驗證

我有一個問題,把它變成一個在Facebook下運行的應用程序。

的問題是,Facebook並沒有在所有

顯示認證頁面。因此,我沒有得到,甚至爲真正的服務器身份驗證過程。

現在,應用程序正在我的本地機器上運行。

我的應用程序被定義爲Facebook應用程序:(本地主機前加入空白只適用於網站安全的目的)

  • 帆布網址:HTTP://本地主機:4300/fbopt/
  • 安全帆布網址:https ://本地主機:4303/fbopt /」

[同樣的問題,在沙箱中運行時發生,沒有安全URL]

我有一個‘粉絲頁面’和‘轉到應用程序’按鈕 那裏。 按下按鈕會將我帶到以下URL: https://apps.facebook.com/[appid]/?fb_source=timeline

瀏覽器開始加載帶有框架的頁面。 較低的框架向我提供的URL發出POST請求。

我的申請頁面重定向到以下網址:

https://www.facebook.com/dialog/oauth?client_id=[appid] & REDIRECT_URI = https://開頭本地主機:4303/fbopt /掛鉤& scope = email,user_location,user_birthday

我希望Facebook能夠顯示具有所需權限的應用程序身份驗證表單。

不幸的是,這沒有發生。 框架中顯示空白頁面,HTML爲空!

我看到(來自Chrome網絡調試器)URL確實被訪問過,但響應是HTTP 200狀態(不是錯誤),但沒有響應數據。相反,越來越

X框選項:DENY

響應頭 - 渲染否認框架之內!爲什麼?

當在Facebook框架結構之外「手動」加載URL時,我確實獲得了具有正確權限的認證屏幕。

我不知道什麼是缺少讓它與畫布工作。

任何暗示我應該補充什麼,或者如何調試這樣的問題 - 將不勝感激。

感謝, 最大

回答

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給用戶登錄對話框重定向將不成功。相反,您必須通過設置Javascript window.top.location屬性來重定向,這會導致父窗口重定向到登錄對話框URL這可能是我的主要錯誤。

最大

0

我有同樣的問題。 302重定向的工作原理是因爲我使用了很多這些功能,但出於任何原因無法重定向到facebook域。如果你想要,你可以通過JavaScript做一個頂級重定向。我所做的是我創建了一個接受url的html,並將其加載到top.location中,然後重定向到apps.facebook.com。最有可能因爲你有一個AntiForgeryToken(如果使用.net),因爲這會在標題中插入xframe sameorigin。您可以用

AntiForgeryConfig.SuppressXFrameOptionsHeader = true;