상황: 사용자가 이미 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 |