应该何时使用服务器端与客户端Facebook身份验证流程?

时间:2011-11-15 20:27:13

标签: facebook-graph-api oauth facebook oauth-2.0

Facebook有两个用于身份验证,客户端和服务器端的流程。应该何时使用每一个?

Facebook文档:https://developers.facebook.com/docs/authentication/

可能相关:What is the purpose of the implicit grant authorization type in OAuth 2?

2 个答案:

答案 0 :(得分:13)

根据您的需要,您可以使用其中一个或两个。如果您希望在用户看到某个页面之前处理对Facebook的调用,请使用服务器端...但是,如果要在用户进行身份验证之前显示部分信息,请使用javascript身份验证。

归结为:

  • Javascript身份验证可能会在弹出窗口中发生,并且不需要重新加载页面,您也可以执行top.location.href重定向。
  • PHP身份验证涉及重定向到身份验证页面。

另见this thread,特别是this response

答案 1 :(得分:0)

要添加@Lix的答案,我会说:

客户端身份验证

  • 如果您想从Facebook API获取有关一次所需用户的信息,就像您只需要像用户名和电子邮件一样获取一次。
  • 当您想要临时访问/管理用户的信息/数据时,不需要经常这样做。
  • 您获得了一个临时令牌,该令牌仅在几个小时内有效,您需要获得一个新令牌,以便在Facebook API过期后再次调用它(这需要用户必须再次授予权限)。

服务器端身份验证

  • 您希望在用户离开您的网站/应用后管理用户的数据(代表他们)。例如,定期收集用户的Feed /时间线数据。
  • 当您想要以经常性方式访问/管理用户的信息/数据时,用户还没有撤销对您的客户端ID的访问权限(由Facebook应用程序代表)。
  • 您同时获得临时令牌和永久令牌(在撰写本文时持续约60天)。每当您需要调用Facebook API时(前一个临时令牌已过期),您可以使用永久令牌获取新的临时令牌 - 而无需再次授予用户授予权限。

因此,简而言之,对于短期使用,请遵循客户端身份验证流程并长期使用,请遵循服务器端身份验证(假设您拥有自己的后端服务器)。