2012-07-25 39 views
1

我們正在將應用程序作爲一個Facebook應用程序在工作中進行集成。我希望能夠檢測用戶是否已登錄Facebook,如果沒有,則提示進行身份驗證。是否可以在沒有彈出窗口的情況下實現Facebook身份驗證

到目前爲止,我們已經成功地使用了facebook SDK和它提供的登錄功能。但是,這會導致身份驗證彈出窗口由我們的應用程序創建,並且它被大多數瀏覽器阻止,所以我們的優先任務是重新實現身份驗證邏輯,以便不使用彈出窗口。

根據Facebook文檔中的this教程,可以通過使用用戶狀態更改請求的事件訂閱(用戶註銷時不起作用)或通過獲取訪問令牌來完成。問題在於令牌作爲請求參數返回到頂部窗口(我在用戶驗證後指定爲返回URL)。由於存在一些跨域和瀏覽器限制,我無法使用客戶端腳本來獲取該值,並且我被卡住了。

這裏的相關問題已被問及常見問題是大多數應用程序正在運行在localhost。然而,我們的應用程序的情況是,我們已將應用程序部署到本地Web服務器,該服務器由公共域公開,但仍存在跨域限制問題。它在facebook應用配置中被其公有域名引用。我完全相信這些域可以從外部完全訪問。

一般來說,我們的情況是,我們希望在facebook用戶正在使用應用程序時託管應用程序。也許這種方法可能不符合我們的要求?是否可以配置跨域通信以避免此問題?是否有其他方法可以避免Facebook登錄彈出窗口?

回答

3

首先,現代瀏覽器中的彈出窗口阻止程序的默認設置是,它們僅阻止在沒有用戶交互的情況下調用彈出窗口。如果您在頁面加載時自動調用FB.login,它可能會被阻止。但是,如果您向用戶提供「登錄此處」的鏈接/按鈕,並且只需點擊該鏈接/按鈕即可調用FB.login,則彈出窗口很可能會顯示並且不會被阻止。

如果你不願意這樣做 - 那麼你的另一種選擇是使用服務器端的認證流程。您可以將用戶重定向到auth對話框,該對話框將出現在相同的窗口中,然後他將被引導回您的應用程序。

+0

事實上,服務器端是我們要求的正確方法 - 謝謝 – 2012-07-27 08:37:34

相關問題