2011-06-23 58 views
0

在我的應用程序的某個時候,我使用了一個iframe。在這個iframe中,一些Facebook的東西可能是有用的,爲此,我使用圖形API很多。 問題是:當某人未登錄Facebook或尚未允許我的應用程序時,系統會提示他們單擊「與facebook連接」按鈕。但只要他們點擊它,iframe就會被銷燬,首頁將被Facebook登錄頁面所取代。最終,首頁被重定向到以前的iframe URL,但前父頁面將永遠丟失。 這是FB連接的預期行爲? 有沒有辦法避免它或破解它? (也許使用彈出窗口而不是iframe,但聽起來很醜陋(比iframe更醜陋))。Facebook在iframe中登錄(但在FB之外)

我目前使用的PHP SDK

非常感謝

+0

Facebook的登錄框架作爲一種安全機制。如果你想顯示一個Facebook登錄窗口,你可以整頁或彈出,而不是在iframe – Yuliy

回答

2

下面是一個解決方案,打開彈出:

https://developers.facebook.com/docs/reference/javascript/FB.login/

通過具有觸發以下的元素代碼點擊事件:

FB.login(callback); 

它應該打開一個彈出窗口來登錄/授權你的應用程序。

所以它涉及到不使用(不推薦)的FBML替代品。

關於iframe元素,我懷疑你會找到一種方法來實現這一點。原因是Facebook的腳本檢查window.top.location是在Facebook的域名。

+0

我會調查它。事情是,我沒有使用任何FBML,所有的調用都是通過PHP中的cURL POST來完成的。有了這樣的彈出登錄調用,我認爲top.window頁面將重新加載重定向URL。我可能是錯的,雖然,謝謝你的提示 – Cystack

+0

哇!我可以提一提嗎?實現「透明」登錄的唯一方法實際上是使用javascript。 – dader

+0

我的意思是,如果用戶已經登錄FB,我只是在PHP中捕獲令牌。問題發生在他們沒有的時候。這就是爲什麼你的解決方案應該沒問題;) – Cystack