11'use client' ;
22
3+ import { getOauthAccessToken } from '@/api/login/oauth' ;
34import { login } from '@/api/login/user' ;
45import Loader from '@/components/common/Loader' ;
56import { signupState } from '@/recoil/signupStore' ;
6- import { clearLetterUrl , setOnboarding , setTokens } from '@/utils/storage' ;
7+ import { Provider } from '@/types/login' ;
8+ import {
9+ clearLetterUrl ,
10+ setOnboarding ,
11+ setRecentLogin ,
12+ setTokens
13+ } from '@/utils/storage' ;
714import axios from 'axios' ;
815import { useRouter } from 'next/navigation' ;
916import { useEffect , useState } from 'react' ;
@@ -13,12 +20,10 @@ import styled from 'styled-components';
1320const Auth = ( ) => {
1421 const [ registerToken , setRegisterToken ] = useRecoilState ( signupState ) ;
1522 const router = useRouter ( ) ;
16- const REST_API_KEY = process . env . NEXT_PUBLIC_REST_API_KEY ;
1723 const [ absoluteUrl , setAbsoluteUrl ] = useState ( '' ) ;
1824 const [ storeUrl , setstoreUrl ] = useState ( '' ) ;
1925 const [ type , setType ] = useState ( '' ) ;
2026 const [ oauthAccessToken , setOauthAccessToken ] = useState ( '' ) ;
21- const [ provider , setProvider ] = useState ( '' ) ;
2227
2328 useEffect ( ( ) => {
2429 if ( typeof window !== 'undefined' ) {
@@ -39,6 +44,7 @@ const Auth = () => {
3944 const AUTHORIZATION_CODE = new URL ( window . location . href ) . searchParams . get (
4045 'code'
4146 ) ;
47+ const STATE = new URL ( window . location . href ) . searchParams . get ( 'state' ) ;
4248
4349 const TYPE = new URL ( window . location . href ) . searchParams . get ( 'type' ) ;
4450
@@ -50,13 +56,12 @@ const Auth = () => {
5056 //type에 따라 다른 토큰 url 지정
5157 switch ( TYPE ) {
5258 case 'kakao' :
53- setProvider ( 'KAKAO' ) ;
5459 try {
5560 const response = await axios . post (
5661 'https://kauth.kakao.com/oauth/token' ,
5762 new URLSearchParams ( {
5863 grant_type : 'authorization_code' ,
59- client_id : REST_API_KEY ,
64+ client_id : process . env . NEXT_PUBLIC_KAKAO_REST_API_KEY ,
6065 redirect_uri : absoluteUrl ,
6166 code : AUTHORIZATION_CODE
6267 } ) ,
@@ -73,7 +78,6 @@ const Auth = () => {
7378
7479 break ;
7580 case 'google' :
76- setProvider ( 'GOOGLE' ) ;
7781 try {
7882 const body = new URLSearchParams ( {
7983 grant_type : 'authorization_code' ,
@@ -100,6 +104,18 @@ const Auth = () => {
100104 }
101105 break ;
102106 case 'naver' :
107+ try {
108+ const response = await getOauthAccessToken (
109+ 'NAVER' as Provider ,
110+ AUTHORIZATION_CODE ,
111+ STATE
112+ ) ;
113+ setOauthAccessToken ( response ) ;
114+ } catch ( error ) {
115+ console . error ( 'Unsupported OAuth type:' , type ) ;
116+ clearLetterUrl ( ) ;
117+ return ;
118+ }
103119 break ;
104120 default :
105121 console . error ( 'Unknown OAuth type:' , TYPE ) ;
@@ -112,12 +128,14 @@ const Auth = () => {
112128 useEffect ( ( ) => {
113129 try {
114130 if ( oauthAccessToken ) {
115- login ( provider , oauthAccessToken )
131+ login ( type ?. toUpperCase ( ) as Provider , oauthAccessToken )
116132 . then ( ( res ) => {
117133 console . log ( 'accessToken' , res . data . accessToken ) ;
118134 setTokens ( res . data . accessToken , res . data . refreshToken ) ;
119135 /* 온보딩 여부 저장 */
120136 setOnboarding ( res . data . isProcessedOnboarding ) ;
137+ /* 최근 로그인 정보 저장 */
138+ setRecentLogin ( type ) ;
121139 if ( storeUrl ) {
122140 router . push ( `/verify/letter?url=${ storeUrl } ` ) ;
123141 clearLetterUrl ( ) ;
0 commit comments