2011-07-08 17 views
4

我正在開發一個允許用戶創建帳戶的網站。然後,網站開發人員將能夠將該身份驗證系統集成到他們的網站中,並允許用戶使用我的網站登錄憑證登錄。我想做類似Facebook連接的方式,以便用戶網站不需要重定向到我的網站登錄,然後我們回調回到他們來自的頁面。解釋FB連接驗證如何工作

我知道Facebook的使用Cookie,但我不知道他們是怎麼檢查,看看他們是否已經登錄

事情我已經注意到:

  • 如果登錄facebook.com那麼您導航到具有Facebook Connect的userssite.com會顯示您已登錄。
  • 如果您註銷userssite.com,它也會將您註銷Facebook。
  • 如果您註銷了facebook.com並登錄到userssite.com,然後導航到userssite2.com,它也會讓您登錄到該站點。

因此,它看起來像他們正在使用跨域cookie或其他東西,但我不知道如何做到這一點。

有人可以瞭解Facebook Connect的工作原理,請解釋我如何在自己的系統中實現此功能?

回答

2

Facebook的主要是移動到的OAuth 2.0的解決方案。我們的authentication guide和官方OAuth 2.0 draft spec是開始的好地方。

+0

他們如何讓其他網站上的用戶登錄到他們的系統而不允許第三方網站竊取登錄信息?我猜他們正在使用iframe做跨網站的東西? – Bot

0

Facebook Connect要求您創建一個新的Facebook應用程序來登錄用戶並進行身份驗證,因此您並不真正「離開Facebook」。當您添加Facebook的初始化代碼:

FB.init({ appId: AppID, status: true, cookie: true, xfbml: true }); 

和Facebook的連接代碼:

<!-- Facebook required --> 
<div id="fb-root"></div> 
<!-- Facebook connect required --> 
<script src="http://connect.facebook.net/en_US/all.js"></script> 

您將應用程序鏈接到Facebook。如果您的Facebook應用程序中的某些內容不正確(應用程序ID,網站URL或Facebook應用程序中的Canvas URL),則該應用程序將無法工作。所有的登錄調用都會引發錯誤。

不要認爲它是與Facebook完全分離的實體。該應用程序很好地鏈接到Facebook。

嘗試使用連接製作Facebook應用程序。然後,您可以查看哪些腳本附加到根和連接腳本。這可能會給你是怎麼回事(有非常大的雖然)從Facebook

更多信息的更好的主意/開發商here

webpage也可能會有所幫助

+0

那麼它是否在您的網站內創建一個iframe,以便您可以訪問所有的facebook信息? – Bot

+0

它不會創建一個帶有Facebook連接的iframe,但它會運行很多用於驗證用戶身份並從facebook獲取所有信息的FB腳本(如登錄狀態,訪問令牌和其他所需密鑰) –

+0

我剛剛找到http://softwareas.com/cross-domain-communication-with-iframes,它表示它確實創建了iframe進行通信。 – Bot