我使用Django social-auth(omab版本只是为了避免与其他类似命名的项目混淆),现在我正在尝试使用Facebook。可以注册新用户并登录/注销而不会出现任何问题。我想要添加的唯一内容是注册期间的表单,让用户输入要在网站上使用的所需用户名,因为目前用户名是facebook用户名(我不想强迫用户使用相同的用户名)或者如果没有facebook用户名的uuid(那很丑)。
我正在阅读文档,管道和所有内容,但我不确定,任何提示或解释都会受到欢迎。
答案 0 :(得分:2)
我在社交认证https://github.com/omab/django-social-auth/tree/master/example/app附带的示例应用中找到了它。有一个使用管道的例子,甚至是你需要实现的表单和视图。很少甚至没有必要进行任何改变以实现有效的实施。在我写这篇文章时,至少需要在表格上完成一些工作,因为你可以输入已经用过的用户名。
答案 1 :(得分:0)
接受的答案链接到整个GitHub项目,但没有解释任何与其相关的部分,其中一些已经过时,所以我会尝试分享我学到的东西。
django-social-auth已被弃用,替换为social-app-django,它将Django与python-social-auth项目集成在一起。
python-social-auth Pipelines上的文档是相关的。在默认管道中,这是生成用户名的阶段:
# Make up a username for this person, appends a random string at the end if
# there's any collision.
'social_core.pipeline.user.get_username',
implementation of get_username
显示默认行为。我们将不得不复制这些方面:
storage.user.user_exists(username=...)
并修改用户名直到它是唯一的,确保其提供的用户名是唯一的。{'username': '...'}
,它将传递给管道中的下一个阶段。要提示用户,我们需要自定义"partial" pipeline stage。这让我们暂停管道以等待用户提交用户名表单,然后在我们拥有用户名后恢复它。