【问题标题】:When should the server-side vs. client-side Facebook authentication flows be used?何时应使用服务器端和客户端 Facebook 身份验证流程?
【发布时间】: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?

【问题讨论】:

    标签: 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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 2012-04-15
      • 2013-06-18
      相关资源
      最近更新 更多