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