django 休息框架社交身份验证与 jwt

moh*_*moh 5 django-authentication django-socialauth single-page-application django-rest-framework

你好,我正在使用 jwt 和 Angular 5 开发 SPA django Rest 框架。我建立了登录和注册部分。现在我正在寻找一种方法来添加社交登录或注册到我的应用程序并在深度搜索后获得 jwt 支持我发现一些模块的文档非常不清楚(至少对我来说)..这个模块 https://github.com/st4lk/ django-rest-social-auth看起来不错,他说使用:

/api/login/social/jwt_user/
Run Code Online (Sandbox Code Playgroud)

和:

/api/login/social/jwt/
Run Code Online (Sandbox Code Playgroud)

是 jwt 的终点,但是当我使用它们时这对我没有任何好处。

我们在闲聊中进行了一些聊天,但没有得出结论,任何人都可以向我和许多像我这样对这个问题感到困惑的开发人员解释解决方案吗?我们应该使用哪个模块,或者如果提到的模块可以,我们应该如何使用它

Tig*_*ger 4

OAuth 2.0 工作流程带有rest-social-auth

  1. 前端需要了解每个社交提供商的以下参数:

    • client_id # 仅在 OAuth 2.0 的情况下,在社交服务提供商上注册的应用程序的 id
    • redirect_uri # 社交提供商将使用代码重定向到此网址
    • scope=your_scope # 例如电子邮件
    • response_type=code # 对于所有 oauth2.0 提供商都相同
  2. 用户确认。

  3. 社交提供商使用参数代码重定向回redirect_uri。

  4. 前端现在已准备好登录用户。为此,请发送带有提供商名称和代码的 POST 请求:

自述文件

这意味着,您应该在facebook 开发人员中设置一个应用程序(以 facebook 为例),这里是教程如何向 Django 添加社交登录,您可以在其中找到如何设置 facebook 应用程序并配置 django_social。

之后,您的 Facebook 应用程序将拥有 client_id、redirect_uri。下一步是获取参数代码。您可以通过向网址https://www.facebook.com/v2.5/dialog/oauth?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&display=popup&scope=email发出 GET 请求来获取参数代码(scope=email,如果您想获取用户电子邮件)

如果一切正确,它将使用代码参数将您重定向到您的redirect_uri(例如:http://YOUR_REDIRECT_URL/?code=90159c983d3bdc28c0PPzfSQB8LI49BYlPA6Vs

现在,您已经有了代码,并且可以准备登录(注册)用户了。只需将包含提供商名称和代码的 POST 请求发送到 url /api/login/social/jwt/

{"code":"YOUR_CODE", "provider":"facebook"}
Run Code Online (Sandbox Code Playgroud)

就这样,您将获得 jwt 令牌作为响应。