From 665de4efbce31ef0304aba7e214010eeb32e9781 Mon Sep 17 00:00:00 2001 From: manNomi Date: Wed, 11 Mar 2026 22:48:35 +0900 Subject: [PATCH] fix(web): prevent duplicate kakao callback auth requests --- .../kakao/callback/KakaoLoginCallbackPage.tsx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) 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 ; };