Django 后端中的 Facebook 登录与大前端分离。

Facebook Login in Django Backend with big Frontend separation.

我正在尝试使用 Facebook 登录。

我想要的是创建端点并像使用 "standard" 电子邮件登录端点一样使用它,因为我需要在后端和前端之间进行较大的分离。 我想这应该很容易做到,但我不知道该怎么做。

我阅读了 this,当我在浏览器中使用 Url 时,它正常工作并且我在响应 Url 中获得了令牌。但是,它总是发生在前端。

我试了很多教程 this one 是一个例子,它有效,但我是后端,我不允许有类似的东西,因为前端也是用 Django 编写的。

所以,我不知道当你只是后端时工作流程应该如何,我不知道前端开发人员在等我什么,因为身份验证实际上发生在前端。

我有点迷路了。

也许有人遇到了与后端相同的问题并且可以帮助我,至少告诉我工作流后端 - 前端应该如何。

Facebook JavaScript/Android/iOs SDK 允许客户端对用户进行身份验证。用户通过 Facebook 身份验证后,您的客户可以通过 https 上的 HTTP POST 发送 accessToken

这是我在类似情况下所做的,

在后端,

创建 API 端点以通过验证 accessToken

来验证用户

POST /auth/

使用此端点验证客户端发送的 accessToken。应使用您的应用密码调用 Facebook 服务来验证令牌。完成验证后,return 将作为 JSON 的响应详细说明身份验证状态和用户身份详细信息(如果成功)。

应要求,

  • body 应包含 accessToken 作为 key/or 和 header
  • Content-Type header 应该是 application/json
  • 必须验证任何额外的预期 headers

根据请求尝试包含

  • 操作状态
  • 操作成功时的用户标识详细信息
  • 一个 JWT 或某种令牌来识别用户可以包含在 Authorization header 中的用户,这样您就可以验证请求,只需购买针对用户验证令牌。如果 JWT 已过期,请将过期设置为 accessToken,在客户端刷新 accessToken 并再次验证。

在前端。

让客户端执行以下操作来验证自己。

  • accessToken 作为 POST 请求发送到 /auth
  • 如果身份验证状态为成功,让他们将 JWT 存储在本地并在即将到来的请求中使用它。

在后端处理即将到来的呼叫,

  • 如果令牌过期或被篡改,重定向客户端以再次通过 Facebook 进行身份验证。
  • 注销用户时,从客户端删除令牌。

所以对于前端开发人员来说, 正确记录您的 API 并与他们分享