1

我使用自定义用户模型在我的站点中注册用户。它的工作方式是,当用户注册时,他/她以 0 信誉开始,类似于堆栈溢出。也就是说,为该用户创建了一个新的用户模型实例。

现在我想将 OAuth 添加到我的网站,但是,我不明白当一个新用户使用 OAuth 登录我的网站时,如何为该用户创建一个新的 django 用户模型实例,就像在我的网站上注册一样让用户从信誉 0 开始。

就像堆栈溢出的实现方式一样,如果用户没有 SO 帐户,他仍然可以使用 google 帐户登录并创建他的堆栈溢出配置文件,就像他在 SO 上注册一样。

我希望我的问题很清楚,我只需要知道在这种情况下事情是如何协同工作的。谢谢大家。

4

1 回答 1

2

OAuth 只是一种登录流程,其中身份验证和数据由第三方提供。例如Google、Facebook、Twitter、OpenID、Yahoo等。流程基本上是这样的:

  1. 用户访问您的站点并单击“使用 XYZ 登录”按钮。
  2. 您将用户重定向到第三方 OAuth 点。例如https://www.facebook.com/login.php
  3. 用户通过第三方登录
  4. 第三方使用某种代码/令牌将用户重定向回您的域 www.example.com/signin/?code=abcdef
  5. 您与第三方交换代码/令牌以获取用户信息,例如姓名/电子邮件。然后你要么:
    • 您使用此信息在您的系统上创建一个帐户。
    • 您找到该用户的现有帐户并以该用户身份登录该用户。

这有点抽象,只是 OAuth 的所有选项的一部分,但它涵盖了基本的登录流程。您所在的所有块都有您需要准备/编码的步骤。例如,获取代码/令牌并将其交换为您可以登录/为用户创建帐户的数据的视图。

大多数第三方都有关于如何使用他们的 API 完成注册的很好的文档。

但是您必须手动创建相当多的逻辑,因为使用自定义用户模型没有好处或缺点。

如果这不能回答您的问题,请详细说明您的意思。

于 2013-11-02T00:05:49.917 回答