diff --git a/src/api/index.ts b/src/api/index.ts index 68563e02..60a1b703 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -13,7 +13,33 @@ export const apiClient = axios.create({ withCredentials: true, // 쿠키 자동 전송 설정 }); -// 응답 인터셉터 (에러 처리) +// 임시 하드코딩된 토큰 (쿠키가 없을 때 사용) +const TEMP_ACCESS_TOKEN = + 'eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjEsImlhdCI6MTc1NDM4MjY1MiwiZXhwIjoxNzU2OTc0NjUyfQ.BSGuoMWlrzc0oKgSJXHEycxdzzY9-e7gD4xh-wSDemc'; + +// Request 인터셉터: 쿠키가 없을 때 임시 토큰을 헤더에 추가 +apiClient.interceptors.request.use( + config => { + // 쿠키에서 Authorization 확인 + const cookies = document.cookie.split(';'); + const hasAuthCookie = cookies.some(cookie => cookie.trim().startsWith('Authorization=')); + + // 쿠키가 없으면 임시 토큰을 헤더에 추가 + if (!hasAuthCookie) { + console.log('🔑 쿠키가 없어서 임시 토큰을 헤더에 추가합니다.'); + config.headers.Authorization = `Bearer ${TEMP_ACCESS_TOKEN}`; + } else { + console.log('✅ Authorization 쿠키가 있어서 자동으로 전송됩니다.'); + } + + return config; + }, + error => { + return Promise.reject(error); + }, +); + +// Response 인터셉터: 401 에러 시 로그인 페이지로 리다이렉트 apiClient.interceptors.response.use( (response: AxiosResponse) => response, (error: AxiosError) => { diff --git a/src/components/common/TokenStatus.tsx b/src/components/common/TokenStatus.tsx new file mode 100644 index 00000000..b852dfe3 --- /dev/null +++ b/src/components/common/TokenStatus.tsx @@ -0,0 +1,45 @@ +import { useState, useEffect } from 'react'; + +const TokenStatus = () => { + const [tokenStatus, setTokenStatus] = useState('확인 중...'); + + useEffect(() => { + const checkToken = () => { + const cookies = document.cookie.split(';'); + const hasAuthCookie = cookies.some(cookie => cookie.trim().startsWith('Authorization=')); + + if (hasAuthCookie) { + setTokenStatus('✅ Authorization 쿠키 있음'); + } else { + setTokenStatus('🔑 임시 토큰 사용 중'); + } + }; + + checkToken(); + // 5초마다 상태 확인 + const interval = setInterval(checkToken, 5000); + + return () => clearInterval(interval); + }, []); + + return ( +
+ {tokenStatus} +
+ ); +}; + +export default TokenStatus; diff --git a/src/hooks/useOAuthToken.ts b/src/hooks/useOAuthToken.ts index 2b58f1d1..a3a138bb 100644 --- a/src/hooks/useOAuthToken.ts +++ b/src/hooks/useOAuthToken.ts @@ -28,8 +28,15 @@ export const useOAuthToken = () => { .catch(error => { console.error('❌ 토큰 발급 실패:', error); // 에러 발생 시 로그인 페이지로 이동 - navigate('/'); + // navigate('/'); + console.log('💡 임시 토큰을 사용하여 계속 진행합니다.'); + // 에러 발생 시에도 임시 토큰으로 계속 진행 + // URL에서 code 파라미터 제거 + const newUrl = window.location.pathname; + window.history.replaceState({}, document.title, newUrl); }); + } else if (!loginTokenKey) { + console.log('🔑 loginTokenKey가 없습니다. 임시 토큰을 사용합니다.'); } }, [isTokenRequested, navigate]);