说明FB连接身份验证的工作原理

时间:2011-07-08 15:47:35

标签: authentication facebook single-sign-on cas

我正在开发一个允许用户创建帐户的网站。然后,网站开发人员将能够将该身份验证系统集成到他们的站点中,并允许用户使用我的站点登录凭据登录。我想这样做类似于facebook连接的工作方式,这样用户网站就不需要重定向到我的网站进行登录,然后我们回调它们来自的页面。

我知道facebook使用cookies,但我不确定他们是如何检查他们是否已登录。

我注意到的事情:

  • 如果登录到facebook.com然后您导航到有Facebook Connect的userssite.com,它会显示您已登录。
  • 如果您退出userssite.com,它也会让您退出Facebook。
  • 如果您退出facebook.com并登录到userssite1.com,请导航至userssite2.com,它也会让您登录该网站。

因此,看起来他们正在使用跨域cookie或其他东西,但我不知道如何做到这一点。

知道Facebook Connect如何正常工作的人可以解释我如何在自己的系统中实现此功能吗?

2 个答案:

答案 0 :(得分:4)

Facebook正在大力发展基于OAuth 2.0的解决方案。我们的authentication guide和官方OAuth 2.0 draft spec是开始的好地方。

答案 1 :(得分: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应用程序中的某些内容不正确(您的Facebook应用程序中的应用程序ID,站点URL或Canvas URL),则该应用程序将无法运行。例如,所有登录调用都会抛出错误。

不要将它视为与facebook完全独立的实体。该应用程序非常好地链接到Facebook。

尝试使用connect创建facebook应用程序。然后,您可以查看附加到root和连接脚本的脚本。这可能会让你更好地了解发生了什么(虽然非常大)

来自facebook / developers here

的更多信息

webpage也可能有用