def save_user(self, request, sociallogin, form=None): email = sociallogin.account.extra_data['email'] if sociallogin.account.provider == 'facebook_no_redirect': picture = sociallogin.account.extra_data['picture']['data']['url'] elif sociallogin.account.provider == 'google_no_redirect': picture = sociallogin.account.extra_data['picture'] else: picture = '' try: email_address = EmailAddress.objects.get(email=email) if not email_address.available: # 해당 이메일로 이미 가입한 유저가 있는지 확인 (이메일 회원가입으로 가입 후 구글 로그인으로 가입하는 경우) user = email_address.user sociallogin.user = user sociallogin.save(request) return user except EmailAddress.DoesNotExist: pass userprofile = { 'email': email, 'name': sociallogin.account.extra_data['name'], 'profile_image': picture } try: user = UserProfile.create_user( UserProfile.get_unique_username(sociallogin.account.extra_data['email']), userprofile) except ValidationError as e: res = HttpResponseBadRequest(str(e.detail)) raise ImmediateHttpResponse(res) Token.objects.create(user=user) sociallogin.user = user sociallogin.save(request) return user