我使用电子邮件作为用户名,因此电子邮件具有独特的属性。问题是,在某些情况下,现有用户会尝试进行社交登录,然后allauth会收到完整性数据库错误。
目标是要更改行为,而不要尝试创建新用户,请使用现有用户来保存相关的社交内容。为此,我将扩展默认社交帐户适配器,尽管它尚不能正常工作。
class SocialAccountAdapter(DefaultSocialAccountAdapter):
def save_user(self, request, sociallogin, form=None):
"""
Save a newly signed up social login.
In case of auto-signup, the signup form is not available.
"""
existing_user = User.objects.filter(email=sociallogin.user.email).first()
if existing_user:
sociallogin.user = existing_user
u = existing_user
else:
u = sociallogin.user
u.set_unusable_password()
if form:
get_account_adapter().save_user(request, u, form)
else:
get_account_adapter().populate_username(request, u)
sociallogin.save(request)
return u