【问题标题】:Implementation of Social Oauth2 rest-framework for combining Django and social accounts用于结合 Django 和社交帐户的 Social Oauth2 休息框架的实现
【发布时间】:2019-01-14 12:13:43
【问题描述】:

我目前正在研究 Web 应用程序的登录机制。这是前端 (Vue) + Django DRF 后端的分离。我想使用 django-rest-framework-social-oauth2 库来实现我们可以在 Evernote 应用程序中看到的相同的东西。用户可以选择从头开始创建帐户或通过 Google 登录。好的,太好了,如果我在 Evernote 网站上创建一个帐户,我可以立即将它们连接到 Google 帐户。

在这种情况下,如果我想从一开始就基于 REST 进行通信,那么这种通信在 Vue - Django 方面的表现会如何

我的计划如下 用户通过填写​​注册表建立一个帐户

通过这种方式,我在我的 django 用户表中获得了登录名、密码等

登录帐户后,他会看到他的网站和连接选项 来自脸书。选择此选项并发送查询后

curl -X POST -d "grant_type=convert_token&client_id=&client_secret=&backend=&token="http://localhost:8000/auth/convert-token

回复:

{
    "access_token": "c3JQjkkAOx8d0ZSyEgP6Hyh2hX3R66",
    "expires_in": 36000,
    "token_type": "Bearer",
    "scope": "read write",
    "refresh_token": "7qawsbmQHgOv5vYjzorAXOeA0d2vla"
}

当然,在此之前,您使用 JS SDK 从 facebook 获取访问令牌 .. 现在我有一个问题..经过这样的交易,数据库中出现了一个2帐户..

当涉及到通过用户 Django 模型中的帐户授权用户时,我使用查询来完成

curl -X POST -d "client_id=&client_secret=&grant_type=password&username=&password="http://localhost:8000/auth/token

我得到的响应一切正常:

{
    "access_token": "hu7chDBxOl11eVkZJmWCXPs0DgkdcS",
    "expires_in": 36000,
    "token_type": "Bearer",
    "scope": "read write",
    "refresh_token": "m6K7tBQbTLJMXNFQQqmDj2wKGUWjIV"
}

问题是我在数据库中有 2 个单独的用户帐户条目,我真的不知道如何将它们组合在一起。

使用数据库中的一个条目创建一个帐户,使用 curl 查询创建第二个帐户,其中我将 access_token 与后端一起指定。我想按照良好的做法去做。我看这些登录方法很多。

【问题讨论】:

    标签: django rest oauth-2.0 django-rest-framework social


    【解决方案1】:

    这是 Oauth 的常见问题。您最终会在数据库中获得多个条目。如果您想解决此问题,您必须在即将创建副本时检测到潜在的副本(因此您永远不会有副本),并让用户有机会说他们拥有第一个帐户。

    之后修复重复很麻烦,可能需要通知许多用户您认为可能存在重复并提示他们合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 2021-11-26
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 2019-07-26
      • 2013-04-08
      相关资源
      最近更新 更多