如何为Social Auth Django App创建自定义管道

时间:2019-09-19 11:20:40

标签: django django-models django-rest-framework django-forms django-views

我有一个带有自定义模型类的应用程序,它包含2个必填字段(电子邮件,用户名)。因此要创建用户,需要传递这2个必填字段。 我安装了social_auth_django_app软件包,并添加了Google OAuth2登录名作为后端。 当我尝试通过Google登录时,收到一条错误消息,指出没有用户名字段无法创建用户。 我在Google上搜索,发现有一种使用自定义管道处理这些社会身份验证的方法。任何人都可以帮助我如何创建自定义管道并处理上述情况,以便从Google OAuth2获取更多数据并分配用户名字段以创建新用户。如果有任何缺点,请告诉我

Sample 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'

0 个答案:

没有答案