当用户通过社交注册登录时,allauth如何工作?

6
我一直在尝试使用 django-allauth 提供社交注册,但是我在配置用户个人资料时遇到了麻烦。没有 django-allauth 的文档告诉:
  1. 当用户通过第三方登录(如 Facebook)时,如何创建 Django 用户帐户
  2. 分配给该用户的用户名和使用的密码是什么。
  3. 某些第三方提供商(如 Facebook)提供有关用户的许多信息,例如他们的姓名,电子邮件等,因此我们如何获取并保存在用户帐户/个人资料中
如果有人在他们的项目中使用 allauth 并可以提供一些详细信息,那将非常有帮助。
1个回答

12

我在我的项目中使用django_allauth。

(1) 当用户通过第三方平台如Facebook登录时,django如何创建用户账户?

您应该查看:

  1. 您的管理面板 并查看有人登录时发生了什么。
  2. allauth.facebook.views.login 并尝试跟踪登录过程

它大致是这样的:

  1. 当用户使用其Facebook凭据登录网站时,他会得到一个访问令牌
  2. 此令牌保存在FACEBOOK_ACCESS_TOKENS表中(您可以在管理面板中查看)
  3. 借助Facebook GraphApi,我们知道他的社交ID
  4. 当我们知道他的社交ID时,我们可以从数据库中获取他的Facebook帐户
  5. 如果我们还没有在数据库中保存它,则将Facebook帐户保存在FACEBOOK_ACCOUNTS表中(在管理面板中的Facebook帐户中)
  6. 然后,我们使用Facebook帐户中的数据在USERS表中创建一个新用户。 (您可以在管理面板的“用户”部分中查看新用户)


(2) 给该用户分配的用户名和使用的密码是什么?

正如我之前提到的,借助Facebook GraphApi,我们获取Facebook用户的用户名,并将其分配给用户配置文件作为User.username。


(3) 某些第三方提供商(如Facebook)提供有关用户的许多信息,例如他们的姓名,电子邮件等。那么我们该如何获取并保存在用户账户/配置文件中?

同样是使用Facebook GraphApi - 它可以帮助您获取所需的信息。

我已经在我的网站上集成了django_allauth并且它正常工作。如果您有更多问题,我会很乐意回答(如果我能)。


编辑 - 关于头像支持...

我认为您需要查看django-allauth设置, 特别是在:

SOCIALACCOUNT_AVATAR_SUPPORT (= settings.INSTALLED_APPS中是否包含 'avatar')

启用对django-avatar的支持。启用后,用户的个人资料图片会在注册时被复制到本地的django-avatar。


虽然我最终解决了问题,但仍然非常感谢您提供的所有信息。只有一件事我不知道如何解决。目前,我已经配置了应用程序,使其从Facebook个人资料获取图像,但我意识到这个图像没有保存,因此如果用户尝试更改头像,则从社交认证带来的图像将丢失。有办法保留它吗? - Sachin
谢谢提供信息,你知道如何在同一Django服务器上添加多个Facebook应用程序的支持吗? - Nimo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接