У меня есть приложение с пользовательской моделью пользователя, оно содержит 2 поля (адрес электронной почты, имя пользователя) в качестве обязательных полей.Итак, чтобы создать пользователя, необходимо пропустить эти 2 обязательных поля.Я установил пакет social_auth_django_app и добавил Google OAuth2 Login в качестве бэкэнд-аутентификации. Когда я пытался войти в систему через Google, я получаю сообщение о том, что пользователь не может быть создан без поля имени пользователя.Я погуглил и обнаружил, что есть способ обработать эту социальную аутентификацию с помощью пользовательских конвейеров. Кто-нибудь может мне помочь, как создать собственный конвейер и обработать описанный выше сценарий для получения дополнительных данных из Google OAuth2 и назначить поле имени пользователя для создания нового нового пользователя..И если есть какие-либо недостатки, пожалуйста, сообщите мне
Пример Models.py
class User(AbstractBaseUser):
email = models.EmailField(
verbose_name='Email Address',
max_length=255,
unique=True,
)
unique_username = models.CharField(
verbose_name='Username',
max_length=30,
unique=True,
)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['unique_username',]
.......
Settings.py
INSTALLED_APPS = [
......
#Social Login
'social_django',
]
AUTHENTICATION_BACKENDS = (
'social_core.backends.github.GithubOAuth2',
...........
'django.contrib.auth.backends.ModelBackend',
)
MIDDLEWARE = [
..........
# Social Login
'social_django.middleware.SocialAuthExceptionMiddleware',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATE_DIR],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
..............
# Social Login
'social_django.context_processors.backends',
'social_django.context_processors.login_redirect',
],
},
},
]
#Google
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = 'App ID'
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = 'App Secret ID'