Facebook 使用 OAuth2 吗?如果使用,集成文档在哪里?

Is facebook using OAuth2 and if so where are the integration docs?

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

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

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

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

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

我应该使用 Facebook 连接吗?我从哪里得到我的 "one time code" 以便我可以将它发送到我的服务器?

关于这个问题有很多困惑。一些指导将是最受欢迎的。

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

Facebook 的实施与 Google 大致相似,并支持许多不同的流程。 Javascript SDK offers a way of doing it in the browser, whereas the more traditional server-side flow 使用一系列重定向并且不需要任何 Javascript。 Facebook 流都没有真正调用自己 OAuth,尽管后者隐含地引用它。

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

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

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