何时应使用服务器端和客户端 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 的移动客户端的社交身份验证

Facebook iOS SDK 和护照-facebook 身份验证

C套接字HTTP 1.1持久连接服务器何时应关闭套接字?

使用护照进行 Facebook 身份验证的 Node+react 应用程序中的 CORS 错误