diff --git a/src/api/config.ts b/src/api/config.ts index 373696a..28f6e76 100644 --- a/src/api/config.ts +++ b/src/api/config.ts @@ -5,7 +5,8 @@ import { removeAccessToken, } from '@/components/login/Auth/token'; -const isDevelopment = window.location.host.includes('dev.'); +const isDevelopment = + import.meta.env.VITE_API_URL_DEV || window.location.host.includes('dev.'); const axiosConfig: AxiosRequestConfig = { baseURL: isDevelopment diff --git a/src/api/useGetIdentificationInfo.ts b/src/api/useGetIdentificationInfo.ts new file mode 100644 index 0000000..bd6fbea --- /dev/null +++ b/src/api/useGetIdentificationInfo.ts @@ -0,0 +1,27 @@ +import { useQuery } from '@tanstack/react-query'; +import { request } from '@/api/config'; +import { getAccessToken } from '@/components/login/Auth/token'; + +interface IdentificationInfoResponse { + id: number; + nickname: string; + profileUrl: string; +} + +export default function useGetIdentificationInfo() { + return useQuery({ + queryKey: ['identificationInfo'], + queryFn: async () => { + const token = getAccessToken(); + return request({ + method: 'GET', + url: '/users/me', + headers: { + Authorization: `Bearer ${token}`, + }, + }); + }, + // 토큰이 저장되도 여기 쿼리문이 실행되지 않기 때문에 토큰이 들어오면 현재 쿼리문 실행되도록 설정 + enabled: !!getAccessToken(), + }); +} diff --git a/src/api/usePostKaKaoLogin.ts b/src/api/usePostKaKaoLogin.ts index 6fb76ff..d767f33 100644 --- a/src/api/usePostKaKaoLogin.ts +++ b/src/api/usePostKaKaoLogin.ts @@ -1,9 +1,11 @@ import { useMutation } from '@tanstack/react-query'; +import { useNavigate } from 'react-router-dom'; import { request } from '@/api/config'; import { setAccessToken } from '@/components/login/Auth/token'; interface LoginResponseType { accessToken: string; + userId: number; } interface LoginRequestType { @@ -12,9 +14,10 @@ interface LoginRequestType { } export default function usePostKakaoLogin() { + const navigate = useNavigate(); + return useMutation({ mutationFn: async (data) => { - console.log('API 요청 데이터:', data); return request({ method: 'POST', url: '/auth/oauth2/code/kakao', @@ -22,11 +25,12 @@ export default function usePostKakaoLogin() { }); }, onSuccess: (data) => { - console.log('로그인 성공, 토큰:', data.accessToken); setAccessToken(data.accessToken); + navigate(`/user/${data.userId}`); }, onError: (err) => { console.error('로그인 실패:', err); + navigate('/onboarding'); }, }); } diff --git a/src/pages/Login/OAuthPage.tsx b/src/pages/Login/OAuthPage.tsx index 2e8a397..34ad47e 100644 --- a/src/pages/Login/OAuthPage.tsx +++ b/src/pages/Login/OAuthPage.tsx @@ -1,32 +1,17 @@ import { useEffect } from 'react'; -import { useNavigate } from 'react-router-dom'; import usePostKakaoLogin from '@/api/usePostKaKaoLogin'; export default function OAuthPage() { - const navigate = useNavigate(); const { mutate } = usePostKakaoLogin(); useEffect(() => { const code = new URL(window.location.href).searchParams.get('code'); if (code) { - mutate( - { - redirectUri: `${window.location.origin}/oauth`, - code, - }, - { - onSuccess: (data) => { - console.log('로그인 성공, 토큰:', data.accessToken); - // 추후 onboarding -> 마이페이지 userId 포함해서 수정 예정 - navigate('/onboarding'); - }, - onError: (err) => { - console.error('로그인 실패:', err); - navigate('/onboarding'); - }, - }, - ); + mutate({ + redirectUri: `${window.location.origin}/oauth`, + code, + }); } }, []);