Python Facebook登录Django后端,前端分离较大。

Python Facebook登录Django后端,前端分离较大。,python,django,facebook,backend,Python,Django,Facebook,Backend,我正在尝试登录Facebook 我想要的是创建和使用端点,就像我使用“标准”电子邮件登录端点一样,因为我需要在后端和前端之间有一个很大的分离。 我认为做这件事应该很容易,但我不知道怎么做 我阅读并在浏览器中使用Url时,它工作正常,我在响应Url中获得令牌。但是,它总是发生在前端 我尝试了很多教程,这是一个例子,它是有效的,但我是后端,我不允许有这样的东西,因为前端也是用Django编写的 所以,我不知道当你只是后端的时候,工作流应该是怎样的,我不知道前端开发人员等待我做什么,因为身份验证实际上

我正在尝试登录Facebook

我想要的是创建和使用端点,就像我使用“标准”电子邮件登录端点一样,因为我需要在后端和前端之间有一个很大的分离。 我认为做这件事应该很容易,但我不知道怎么做

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

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

所以,我不知道当你只是后端的时候,工作流应该是怎样的,我不知道前端开发人员等待我做什么,因为身份验证实际上发生在前端

我有点迷路了


也许有人和后端有同样的问题,可以帮助我,至少告诉我,工作流后端-前端应该是怎样的

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

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

在后端, 通过验证用户的
accessToken
,创建API端点以对用户进行身份验证

POST/auth/
使用此端点验证客户端发送的
accessToken
。应使用你的应用程序密码通过调用Facebook服务验证令牌。验证完成后,以JSON形式返回响应,详细说明身份验证的状态,如果成功,则返回用户标识详细信息

应要求,

  • 正文应包含
    accessToken
    作为键/头
  • 内容类型
    标题应为
    application/json
  • 必须验证任何其他预期标头
根据请求,尝试包括

  • 行动状况
  • 操作成功时的用户标识详细信息
  • 一个JWT或一些sorta令牌,用于识别用户可以在
    授权
    头中包含的用户,这样您就可以验证请求,只需根据用户验证令牌即可。将过期设置为
    accessToken
    如果
    JWT
    过期,请在客户端刷新
    accessToken
    ,然后再次验证
在前端。 让客户端执行以下操作来验证自己

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

  • 若令牌过期或被篡改,请重定向客户端以再次通过Facebook验证
  • 从用户注销时,从客户端删除令牌
所以对于前端开发者来说,
正确地记录您的API并与他们共享它

因此您的前端和后端需要“很大的分离”,但您仍然使用Django来实现这两个功能?现在我有点不知所措你考虑过Facebook JavaScript SDK吗?我不使用Django作为前端。我不是前端开发人员,那只是为了测试。他们使用iOS和Android。我与前端没有任何关系,我只给出“端点”,这就是问题所在。JavaScript SDK也是如此,我与前端没有任何关系。我使用太多JWT,你用JWT生成的令牌与Facebook令牌不同吗?JWT令牌可以签名,验证JWT比验证Facebook令牌更容易,因为验证Facebook令牌你需要调用Facebook服务。是的,这是真的。知道了。