“Facebook Connect”,“使用Twitter登录”等在技术上如何运作?

时间:2010-07-06 14:12:29

标签: facebook http cookies twitter

我很好奇这些系统如何在技术上运作。据我了解,您以用户身份执行以下操作:

  1. 转到您最喜爱的第三方网站。
  2. 点击“Facebook Connect”按钮。
  3. 登录Facebook(如果尚未登录)。
  4. 授权申请
  5. 您将被路由回登录的第三方网站。
  6. 但是,第三方网站如何与FB谈论你是谁?我可以理解当你最初授权应用程序时它如何能够获得所需的信息,但之后会怎么知道呢?这是一个场景:

    1. 你去Facebook并登录。
    2. 然后转到您最喜欢的第三方网站(您已经授权)。
    3. 它已经知道你已登录了!

4 个答案:

答案 0 :(得分:10)

执行使用IFrame的后台ping,如果当前已登录的帐户已经授权应用程序,则将访问令牌和用户ID返回给应用程序。有了这个,应用程序可以决定做什么(通常,设置一个cookie并刷新页面,以便服务器可以重新呈现页面,知道你是基于刚刚设置的cookie的人)。如果你很好奇,可以在这里查看名为FB.getLoginStatus()的客户端JS方法的Facebook实现:http://github.com/facebook/connect-js/blob/master/src/core/auth.js#L117

答案 1 :(得分:3)

它正在使用名为OAuth的三方认证系统。

在您开始此过程后,第三方网站将连接到Facebook,如果您已登录Facebook(使用Cookie进行实时会话),那么它将使用该权限,并请求权限授权第三方应用。

一旦获得授权,它将获得一个auth_token,它可用于访问您帐户中的信息,除非您撤消其访问权限。

答案 2 :(得分:2)

结帐OpenID。此演示文稿也非常有趣:{{3p>

答案 3 :(得分:0)

这一切都通过OAuth2机制发生,其中第三方应用程序已经向facebook(或具有oAuth2实现的任何其他网站)注册并获得Id(通常称为clientId)和secretCode(即clientSecret)。 因此,当您想通过fb登录第三方应用程序时,该服务提供(clientId + clientSecret + callbackUrl)--->到facebook.while,前两个是授权第三部分服务和回调URl是一个URL,其中Facebook回复了一个" accessToken"对于那个帐户。 使用此accessToken,第三方服务将调用facebook的图表api来获取用户相关信息并使用它们将用户登录到他们的服务中。