django에서 allauth를 사용시 일반 유저가 소셜로그인을 연동 하였을 경우에 일반 유저와 소셜 유저를 연결 하는 방법
# settings.py
SOCIALACCOUNT_ADAPTER = 'member.adapter.SocialAccountRegisterAdapter'
class SocialAccountRegisterAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin):
        if sociallogin.user.id:
            return
        if request.user and request.user.is_authenticated:
            try:
                login_user = User.objects.get(email=request.user)
                sociallogin.connect(request, login_user)                
            except User.DoesNotExist:
                pass
    def save_user(self, request, sociallogin, form=None):
        serializer = UserResigerBaseSerializer(data=request.POST)
        serializer.is_valid()
        
        user = super().save_user(request, sociallogin, form)
        return user
Comments