我很好奇这些系统如何在技术上运作。据我了解,您以用户身份执行以下操作:
但是,第三方网站如何与FB谈论你是谁?我可以理解当你最初授权应用程序时它如何能够获得所需的信息,但之后会怎么知道呢?这是一个场景:
答案 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来获取用户相关信息并使用它们将用户登录到他们的服务中。