Проблема со входом в Google с помощью Django allauth: не предлагается выбрать аккаунт Google в режиме инкогнито или в некоторых браузерах (opera, Edge)

Я использую Django allauth для входа в Google в своем веб-приложении. Все работает хорошо, но я столкнулся с проблемой, когда пользователи пытаются войти в систему с помощью Google в режиме инкогнито или в некоторых браузерах, таких как Opera или Edge, им не предлагается выбрать аккаунт Google. Вместо этого происходит автоматический вход в систему с помощью ранее зарегистрированного аккаунта Google.

Вот фрагмент моих настроек в файле settings.py:

SITE_ID = 1  

SOCIALACCOUNT_ADAPTER = 'microdistribution.users.adapters.CustomSocialAccountAdapter'
ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
SOCIALACCOUNT_LOGIN_ON_GET=True
ACCOUNT_LOGOUT_ON_GET = True
SOCIALACCOUNT_EMAIL_AUTHENTICATION = True
ACCOUNT_SESSION_REMEMBER = False
SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'AUTH_PARAMS': {'access_type': 'online'},
    }
}

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'allauth.account.middleware.AccountMiddleware', #new
    'microdistribution.utils.middleware.DynamicSiteMiddleware', #new
]

INSTALLED_APPS = [
      'django.contrib.sites',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
]

Пользовательский адаптер, который я использую

class CustomSocialAccountAdapter(DefaultSocialAccountAdapter):
    def save_user(self, request, sociallogin, form=None):
        user = sociallogin.user

        # Check if the user already exists
        existing_user = self.get_existing_user(user)
        if existing_user:
            return existing_user

        # If the user doesn't exist, create a new one
        try:
            new_user = super().save_user(request, sociallogin, form)

            new_user.name = sociallogin.account.extra_data.get('name')
            new_user.client_uid_id = User.objects.get(id = settings.CLIENT[request.META['HTTP_HOST']].client_uid_id)
            new_user.save()
            return new_user
        
        except Exception as e:
            print(f"Error While Creating User: {e}")
            return None


    def get_existing_user(self, user):
        existing_user = None
        try:
            client_uid_id = User.objects.get(id = settings.CLIENT[self.request.META['HTTP_HOST']].client_uid_id)
            existing_user = User.objects.get(email=user.email, client_uid_id = client_uid_id)
            print("existing user", existing_user)
        except User.DoesNotExist:
            pass
        return existing_user

Middleware

class DynamicSiteMiddleware(MiddlewareMixin):
    def process_request(self, request):
        try:
            current_site = Site.objects.get(domain=request.get_host())
        except Site.DoesNotExist:
            current_site = Site.objects.get(id=settings.SITE_ID)
        request.site = current_site
        settings.SITE_ID = current_site.id
        response = self.get_response(request)
        return response

Я пробовал использовать ACCOUNT_SESSION_REMEMBER = False, и это ничего не изменило.

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