프로젝트

소셜계정 연동 시 중복확인 문제

content0474 2025. 1. 20. 10:04

상황: 사용자가 이미 default_social_provider로 등록된 소셜 계정을 연동하려고 하면 에러 메시지가 반환

{
    "status": "error",
    "message": "이미 연결된 소셜 계정입니다.",
    "redirect_url": null
}

 

 

원인: 소셜 계정 연동 로직에서 중복 계정 확인 시, 해당 계정이 이미 기본 제공자로 설정된 경우를 고려하지 않음

 

기존코드

class LinkSocialAccountView(APIView):
    permission_classes = [IsAuthenticated]

    def post(self, request):
        provider = request.data.get('provider')
        social_id = request.data.get('social_id')
        user = request.user

        if CustomSocialAccount.objects.filter(provider=provider, uid=social_id).exists():
            return Response({
                "status": "error",
                "message": "이미 연결된 소셜 계정입니다.",
                "redirect_url": None
                }, status=400)

 

 

해결: LinkSocialAccountView를 수정하여 이미 연결된 소셜 계정에 대해 성공 메시지를 반환

class LinkSocialAccountView(APIView):
    permission_classes = [IsAuthenticated]

    def post(self, request):
        provider = request.data.get('provider')
        social_id = request.data.get('social_id')
        user = request.user

        # 이미 연동된 소셜 계정인지 확인
        existing_account = CustomSocialAccount.objects.filter(provider=provider, uid=social_id, user=user).exists()
        if existing_account:
            return Response({
                "status": "success",
                "message": f"이미 {provider} 계정이 연동되어 있습니다.",
                "redirect_url": f"/profile/{user.username}/"
            })

 

 

결과: default_social_provider로 등록된 계정을 연결하려고 하면 아래 메시지가 반환됨

{
    "status": "success",
    "message": "이미 kakao 계정이 연동되어 있습니다.",
    "redirect_url": "/profile/<username>/"
}

'프로젝트' 카테고리의 다른 글

도커 실행 시 크롬드라이버와 크롬 버전 불일치  (1) 2025.01.22
ResourceExhausted  (0) 2025.01.21
소셜계정 선택 로직 업데이트  (0) 2025.01.17
SSL 에러  (0) 2025.01.16
크롤링코드 최적화  (0) 2025.01.15