【问题标题】:Is facebook using OAuth2 and if so where are the integration docs?facebook 是否使用 OAuth2,如果是,集成文档在哪里?
【发布时间】:2016-11-27 13:18:00
【问题描述】:

我的客户端是基于 Web 的,带有 NodeJS 服务器。

我最近使用此流程为服务器端应用实现了 Google 登录

https://developers.google.com/identity/sign-in/web/server-side-flow

我现在正在尝试在 Facebook 上实现类似的东西,但是当我查看文档时,没有提到 oauth2。

https://developers.facebook.com/docs/facebook-login

我应该使用 Facebook 连接吗?我从哪里获取我的“一次性代码”以便将其发送到我的服务器?

在这个主题上有很多困惑。一些方向将是最受欢迎的。

【问题讨论】:

    标签: facebook oauth-2.0 facebook-oauth


    【解决方案1】:

    按照设计,OAuth 并不是一个非常规范的标准。它描述了进行授权的各种流程,并且每个流程都被广泛地指定,足以提供多种解释和实现。

    Facebook 的实施与 Google 的实施大体相似,并支持许多不同的流程。 Javascript SDK 提供了一种在浏览器中执行此操作的方法,而更传统的 server-side flow 使用一系列重定向并且不需要任何 Javascript。 Facebook 流程都没有真正称自己为 OAuth,尽管后者隐含地引用了它。

    您询问了“一次性代码”。这是the OAuth2 specification 第 4.1 节中描述的授权码流程的一部分。上面描述的服务器端 Facebook 流程似乎非常接近规范,文档描述了如何获取此代码并将其交换为访问令牌。您可以使用重定向来实现,或者您可以编写一些 Javascript 在 XHR 中访问该端点,然后自己提取代码并将其传递给服务器。

    但您也可以使用 Javascript SDK 来做同样的事情。它基于规范第 4.2 节中描述的浏览器驱动的隐式流。在这种情况下,客户端会获得一个短期访问令牌。但是,它可以将该令牌发送到服务器,然后服务器可以将其交换为一个长期存在的访问令牌,类似于一次性代码的用例。该过程是 Javascript SDK 文档中的 described

    所有这些都是说我不会太担心什么是或不是“OAuth”。这些授权服务中的大多数都基于相同的基本 OAuth 概念,但是由于规范非常笼统,它们的工作方式都不完全相同。只需找出最适合您的应用程序的流程并使用它。

    【讨论】:

    • 哇,这太可怕了——我不想要重定向!逆天。但是谢谢你的回答:)
    • @danday74:哦,好吧,你当然不必这样做。我编辑了答案以尝试清除问题。
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2011-01-31
    • 2013-01-12
    • 2011-06-16
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    相关资源
    最近更新 更多