Как обрабатывать аутентификацию социальной аутентификации в пользовательской модели? - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть приложение с пользовательской моделью пользователя, оно содержит 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'
...