Django allauth перенаправление на маршрут регистрации для пользователя, который зарегистрировался с паролем и вошел с социальным логином

Я использовал Django allauth для аутентификации пользователей в своем приложении. Когда пользователь регистрируется в аккаунте google с помощью электронной почты и ручного пароля, а затем пытается войти в систему через google social login, Django allauth перенаправляет пользователя на маршрут accounts/social/signup/ и просит ввести адрес электронной почты, а после ввода адреса электронной почты сообщает пользователю, что адрес электронной почты уже существует! Я читал документацию и конфигурации allauth, но ничего не работает, вот мое подтверждение в settings.py:

ACCOUNT_AUTHENTICATION_METHOD = ('username_email')
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https'
####
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_EMAIL_VERIFICATION = "none"
SOCIALACCOUNT_EMAIL_REQUIRED = True

Любое предложение будет оценено по достоинству.

Я сделал свой, чтобы сделать что-то вроде "автоматической привязки существующего пользователя".

settings.py

SOCIALACCOUNT_ADAPTER = 'myapp.socauthadapter.MySocialAccountAdapter'

myapp/socauthadapter.py

from django.contrib.auth import get_user_model
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from allauth.account.utils import perform_login

usermodel = get_user_model()

class MySocialAccountAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin): 
        user = sociallogin.user
        if user.id:  #Already linked
            return          
        try:
            UserObj = usermodel.objects.get(email=user.email)  # if user exists, connect the account to the existing account and login
            sociallogin.state['process'] = 'connect'                
            perform_login(request, UserObj, 'none')
        except usermodel.DoesNotExist:
            pass

надеюсь, это поможет

Вернуться на верх