facebook 是否使用 OAuth2,如果是,集成文档在哪里?

dan*_*y74 2 facebook oauth-2.0 facebook-oauth

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

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

在此处输入图片说明

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

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

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

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

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

Kev*_*nry 5

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

Facebook 的实施与谷歌的实施大致相似,并支持许多不同的流程。在使用Javascript SDK提供了在浏览器中做的一种方式,而更传统的服务器端流量使用一系列重定向,并且不需要任何JavaScript。Facebook 流都没有真正称自己为OAuth,尽管后者隐式地引用了它。

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

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

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