2011-09-29 29 views
1

我在第三方網站上有一個iframe。 iframe內部是我的應用程序,用戶使用FB Connect進行身份驗證。我在我的Ruby on Rails站點上使用omniauth gem來處理與Facebook的連接。是否可以在第三方網站的iframe中使用FB Connect?

它可以無縫工作,如果a)您已經登錄到FB,並且b)您已經授權我的網站使用您的詳細信息。

如果其中任何一個丟失 - 在FB連接呼叫到Facebook的那一刻 - 一切都會停止,並且我會看到FB徽標和點擊鏈接到Facebook。當我點擊鏈接時 - 它將我帶出我的iframe並進入Facebook。顯然,一旦我返回 - 沒有iframe可以返回,我不再在第三方網站上 - 但是我的。

該技術是否可行?如果是這樣 - 我可能會在哪裏出錯?正如我所說 - 如果a)和b)得到滿足 - 它可以無縫工作。

回答

1

你不能在iframe中重定向到Facebook,它必須被加載到頂層頁面。這就是爲什麼你看到FB標誌和鏈接,它在那裏強制iframe結構的突破。如果你想避免這個中間步驟,確保你自己做一個頂級重定向(通常通過輸出一些設置top.location的javascript代碼)。

在回報方面,您可以將redirect_uri設置爲指向第三方網站,而不是直接指向您的網站(或者接受可能無法實現的默認redirect_uri),或者如果因爲您的在Facebook上的應用程序配置,檢測到您的網頁正在加載到頂層,並重定向到第三方網站強制它回到IFRAME。

+0

哦,不 - 太遺憾了。我曾在某些網站上看到使用彈出式窗口。這會起作用嗎?因此,在iframe中,我在主窗口上打開一個彈出窗口 - 執行facebook連接過程,然後關閉彈出窗口。我不認爲會有辦法通知我的網站在iframe中認證已完成。所以 - 不知道這在技術上是否可行 - iframe中的我的站點可以輪詢經過驗證的cookie以「到達」? – Joerg

+0

這將是一個相當奇怪的流程,但理論上可以打開一個加載Facebook身份驗證頁面的新窗口,然後將重定向回到您網域中的頁面。然後該頁面可以輸出一些使用window.opener與iframe進行通信的javascript。但是,做一個頂級重定向然後在完成時跳回框架不是更容易嗎? –

+0

我發現它:它看起來像http://svpply.com/login正在做類似的事情。因此,如果我將該網址添加到iframe中,它就會按照我希望的方式工作。我只是不確定他們是如何實施它的。我可以看到有服務器端和客戶端連接的方式。登錄後,他們創建一個用戶名 - 所以它看起來也有一些服務器端的實現。但是,是的 - 我只是不知道他們採取了哪些不同的步驟。 – Joerg

相關問題