Я реализовал авторизацию Google с помощью django-allauth, но она работает только для пользователей, зарегистрированных с помощью django-allauth, а для пользователей, зарегистрированных с помощью django, авторизация не работает и перенаправляет на http://127.0.0.1:8000/social/ signup/ с сообщением «Зарегистрируйтесь. Вы собираетесь использовать свою учетную запись Google для входа на локальный хост. В качестве последнего шага заполните следующую форму:».
Как разрешить пользователям, не зарегистрированным в django-allauth, входить в систему с помощью Google?
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'smart_selects',
'users',
'main_app',
'chat',
'channels',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.google',
'phonenumber_field',
'django_filters',
]
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
]
SITE_ID = 4
AUTH_USER_MODEL = 'users.AdvUser'
LOGIN_URL = reverse_lazy('users:login')
LOGIN_REDIRECT_URL = "main_app:home"
LOGOUT_REDIRECT_URL = "main_app:home"
SOCIALACCOUNT_PROVIDERS = {
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
models.py
class AdvUser(AbstractUser):
first_name = models.CharField("Ім'я", blank=False, null=False, default='', max_length=50)
last_name = models.CharField("Прізвище", blank=False, null=False, default='', max_length=100)
username = models.CharField("Нік", blank=False, null=False, max_length=50, unique=True)
email = models.EmailField("Email", max_length=150, unique=True)
avatar = models.ImageField(verbose_name='Аватар', upload_to=get_upload_path, blank=True,
default='default/users/default_avatar.png')
phone_number = PhoneNumberField(verbose_name='Номер телефону', unique=True, null=False, blank=False)
last_online = models.DateTimeField(verbose_name='Кінець останнього сеансу', blank=True, null=True)
online = models.PositiveIntegerField(verbose_name='Статус - Online/Offline', default=0)
active_chat = models.ForeignKey(Thread, verbose_name='Активний чат', on_delete=models.SET_NULL,
null=True, blank=True)
notification = models.BooleanField(verbose_name='Повідомлення', default=False)
count_ads = models.PositiveIntegerField(verbose_name='Кількість доданих оголошень', default=0)





К счастью, эту проблему решил замечательный человек и после многочасового гугления я нашел эту ссылку с ответом на свой вопрос: https://devpress.csdn.net/python/6304c490c67703293080de34.html
Note: я изменил is_authenticated() на is_authenticated в adapter.get_login_redirect_url и использую LOGIN_REDIRECT_URL без .format(), но это зависит от ваших настроек.
пожалуйста, поделитесь соответствующими settings.py