【问题标题】:When should the server-side vs. client-side Facebook authentication flows be used?何时应使用服务器端和客户端 Facebook 身份验证流程?
【发布时间】:2011-12-29 20:57:45
【问题描述】:
【问题讨论】:
标签:
facebook-graph-api
oauth
facebook
oauth-2.0
【解决方案1】:
要补充@Lix 的答案,我想说:
客户端身份验证
- 如果您想从 Facebook API 获取有关用户的一些信息,则需要一次,例如您只需要获取一次,例如用户名和电子邮件。
- 当您想临时访问/管理用户的信息/数据并且不需要经常这样做时。
- 您获得了一个临时令牌,该令牌仅在几个小时内有效,您需要获得一个新令牌才能在过期后再次调用 Facebook API(这需要用户再次授予权限)。
服务器端身份验证
- 您希望在用户离开您的网站/应用程序后(代表他们)管理用户的数据。例如,定期收集用户的提要/时间线数据。
- 当您希望以重复的方式访问/管理用户的信息/数据,直到用户没有撤销对您的客户端 ID(由 Facebook 应用表示)的访问权限。
- 您将同时获得一个临时令牌和一个永久令牌(在撰写本文时持续大约 60 天)。您可以在每次需要调用 Facebook API 时使用永久令牌来获取新的临时令牌(假设之前的临时令牌已过期)——而无需打扰用户再次授予权限。
因此,简而言之,对于短期使用,请遵循客户端身份验证流程,对于长期使用,请遵循服务器端身份验证(假设您有自己的后端服务器)。
【解决方案2】:
根据您的需要,您可以使用其中一种或两种。如果您希望在用户看到某个页面之前处理对 facebook 的调用,请使用服务器端...但是如果您想在用户通过身份验证之前显示部分信息,请使用 javascript 身份验证。
归结为:
-
Javascript 身份验证可以在弹出窗口中进行,不需要重新加载页面,您也可以执行 top.location.href 重定向。
-
PHP 身份验证 涉及到身份验证页面的重定向。
另见this thread,尤其是this response。