将社交登录数据保存在现有用户中

时间:2020-05-15 02:23:21

标签: python django django-allauth

我使用电子邮件作为用户名,因此电子邮件具有独特的属性。问题是,在某些情况下,现有用户会尝试进行社交登录,然后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

0 个答案:

没有答案