我的客户端是基于Web的NodeJS服务器。
我最近使用此流程为服务器端应用程序实现了Google登录
见https://developers.google.com/identity/sign-in/web/server-side-flow
我现在正在尝试在Facebook上实现类似的功能,但是当我查看文档时,没有对oauth2的引用。
https://developers.facebook.com/docs/facebook-login
我应该使用Facebook Connect吗?我从哪里获得“一次性代码”,以便可以将其发送到服务器?
在这个问题上很多困惑。一些方向将是最受欢迎的。
最佳答案
从设计上来说,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概念,但是由于该规范非常笼统,所以它们都不完全相同。只需确定哪种流程最适合您的应用程序并使用它即可。
关于facebook - Facebook是否使用OAuth2?如果是,那么集成文档在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38546720/