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

标签 facebook oauth-2.0 facebook-oauth

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

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

enter image description here

参见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 流程似乎非常接近规范,并且文档描述了如何获取此代码并将其交换为访问 token 。您可以使用重定向来完成此操作,也可以编写一些 Javascript 以在 XHR 中命中该端点,然后自行提取代码并将其传递到服务器。

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

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

关于facebook - facebook 是否使用 OAuth2?如果是,集成文档在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38546720/

相关文章:

java - 如何在本地存储 Google Drive SDK 的凭据

php - "your authorization header here",那是什么?

ios - OAuth2 "social login"流程(允许通过 Facebook/Twitter 进行 OAuth2 身份验证): are there any examples/literature?

php - 如何使用 Build Ubuntu 运行 HipHop/HHVM

ios - 如何将 Facebook 闪烁添加到图像和 UIView 中?

mysql - 使用 Hibernate 实现 JWT Spring 安全 token 存储?

Spring Social - Facebook 登录出现 404 错误

每个帖子都有 Facebook 评论吗?

facebook - 如何访问 Messenger 平台应用仪表板?

facebook - 使用应用程序访问 token 获取具有国家/地区限制的页面提要