diff --git a/apps/web/src/app/login/kakao/callback/KakaoLoginCallbackPage.tsx b/apps/web/src/app/login/kakao/callback/KakaoLoginCallbackPage.tsx index d10775e0..d20d13ec 100644 --- a/apps/web/src/app/login/kakao/callback/KakaoLoginCallbackPage.tsx +++ b/apps/web/src/app/login/kakao/callback/KakaoLoginCallbackPage.tsx @@ -5,16 +5,26 @@ import { useEffect } from "react"; import { usePostKakaoAuth } from "@/apis/Auth"; import CloudSpinnerPage from "@/components/ui/CloudSpinnerPage"; +const attemptedKakaoAuthCodes = new Set(); + const KakaoLoginCallbackPage = () => { const searchParams = useSearchParams(); const { mutate: postKakaoAuth } = usePostKakaoAuth(); + const code = searchParams?.get("code"); useEffect(() => { - const code = searchParams?.get("code"); - if (code) { - postKakaoAuth({ code }); + if (!code) { + return; + } + + // Strict Mode remount/useEffect 재실행 시 동일 인가코드 중복 호출 방지 + if (attemptedKakaoAuthCodes.has(code)) { + return; } - }, [searchParams, postKakaoAuth]); + + attemptedKakaoAuthCodes.add(code); + postKakaoAuth({ code }); + }, [code, postKakaoAuth]); return ; };