11import { NextRequest , NextResponse } from "next/server" ;
2- import axios from "axios" ;
32import { OauthUser } from "@/types/oauth/oauthReq" ;
43import apiClient from "@/lib/apiClient" ;
54
@@ -25,72 +24,47 @@ export const GET = async (req: NextRequest) => {
2524 }
2625 const { provider, role } = parsedState ;
2726
28- const KAKAO_TOKEN_URL = "https://kauth.kakao.com/oauth/token" ;
29- const KAKAO_USER_INFO_URL = "https://kapi.kakao.com/v2/user/me" ;
3027 const clientId = process . env . NEXT_PUBLIC_KAKAO_REST_API_KEY ;
3128 const redirectUri = process . env . NEXT_PUBLIC_KAKAO_REDIRECT_URI ;
3229
3330 if ( ! clientId || ! redirectUri ) {
3431 return NextResponse . json ( { message : "Environment variables not set" } , { status : 500 } ) ;
3532 }
3633
37- const params = new URLSearchParams ( {
38- grant_type : "authorization_code" ,
39- client_id : clientId ,
40- redirect_uri : redirectUri ,
41- code : code ,
42- } ) ;
34+ const kakaoUser : OauthUser = {
35+ role : role ,
36+ name : "" , // ๊ธฐ๋ณธ๊ฐ ์ค์ (๋น ๋ฌธ์์ด)
37+ token : code , // ์ธ๊ฐ์ฝ๋ ๊ทธ๋๋ก ์ ๋ฌ
38+ redirectUri : redirectUri ,
39+ } ;
4340
4441 try {
45- // ์ก์ธ์ค ํ ํฐ ์์ฒญ
46- const tokenResponse = await axios . post ( KAKAO_TOKEN_URL , params ) ;
47- const { access_token } = tokenResponse . data ;
48-
49- if ( ! access_token ) {
50- return NextResponse . json ( { message : "Failed to retrieve access token" } , { status : 400 } ) ;
51- }
52-
53- // ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ ๋ณด ์์ฒญ
54- const userInfoResponse = await axios . get ( KAKAO_USER_INFO_URL , {
55- headers : {
56- Authorization : `Bearer ${ access_token } ` ,
57- } ,
58- } ) ;
59-
60- const user = userInfoResponse . data ;
61-
62- const kakaoUser : OauthUser = {
63- role : role ,
64- name : user . properties ?. nickname ,
65- token : code , // ์ธ๊ฐ ์ฝ๋ ๊ทธ๋๋ก ์ฌ์ฉ
66- redirectUri : redirectUri ,
67- } ;
68-
69- try {
70- const kakaoSignupResponse = await apiClient . post ( `/oauth/sign-up/${ provider } ` , kakaoUser ) ;
71- console . log ( "์นด์นด์ค ํ์๊ฐ์
์ฑ๊ณต:" , kakaoSignupResponse . data ) ;
72- } catch ( error ) {
73- const errorMessage = ( error as any ) . response ?. data ;
74- console . log ( "์นด์นด์ค ํ์๊ฐ์
์๋ฌ" , errorMessage ) ;
75- }
42+ // ์ธ๊ฐ์ฝ๋๋ฅผ ํฌํจํ ๋ฐ์ดํฐ๋ฅผ ๋ฐฑ์๋๋ก ์ ๋ฌ
43+ const kakaoSignupResponse = await apiClient . post ( `/oauth/sign-up/${ provider } ` , kakaoUser ) ;
44+ console . log ( "์นด์นด์ค ํ์๊ฐ์
์ฑ๊ณต:" , kakaoSignupResponse . data ) ;
7645
7746 // ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ฐํ
78- return NextResponse . json ( kakaoUser ) ;
79- } catch ( error ) {
80- console . error ( "Kakao login error:" , error ) ;
47+ // return NextResponse.json(kakaoSignupResponse.data);
48+ } catch ( error : any ) {
49+ // ์๋ฌ ํ์
๋ช
์
50+ console . error ( "์นด์นด์ค ํ์๊ฐ์
์๋ฌ:" , error . response ?. data || error . message ) ;
8151
82- // Axios ์๋ฌ์ธ ๊ฒฝ์ฐ ์์ธ ์ ๋ณด ์ ๊ณต
83- if ( axios . isAxiosError ( error ) ) {
84- const { response } = error ;
85- if ( response ) {
86- return NextResponse . json (
87- { message : response . data ?. msg || "Error during Kakao API call" } ,
88- { status : response . status || 500 }
89- ) ;
90- }
91- }
52+ // return NextResponse.json({ message: error.response?.data || "Error during Kakao signup" }, { status: 500 });
53+ }
9254
93- // ๊ธฐํ ์๋ฌ ์ฒ๋ฆฌ
94- return NextResponse . json ( { message : "Internal Server Error" } , { status : 500 } ) ;
55+ try {
56+ // ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ฐํ
57+ const response = NextResponse . redirect ( "http://localhost:3000" ) ;
58+ response . cookies . set ( "user" , JSON . stringify ( kakaoUser ) , {
59+ httpOnly : true ,
60+ secure : process . env . NODE_ENV === "production" ,
61+ sameSite : "strict" ,
62+ maxAge : 60 * 60 * 24 , // 1์ผ
63+ path : "/" ,
64+ } ) ;
65+ return response ;
66+ } catch ( error : any ) {
67+ console . error ( "์นด์นด์ค ํ์๊ฐ์
์๋ฌ:" , error . response ?. data || error . message ) ;
68+ return NextResponse . json ( { message : error . response ?. data || "์๋ฒ์๋ฌ" } , { status : 500 } ) ;
9569 }
9670} ;
0 commit comments