Compare commits

...

2 Commits

Author SHA1 Message Date
jaehwang a6daff4e38 Merge branch 'main' into scraper-poc 2026-01-21 06:26:59 +00:00
hbyang 72e06ee951 카카오 로그인 redirect 처리 . 2026-01-21 14:59:55 +09:00
1 changed files with 13 additions and 6 deletions

View File

@ -7,7 +7,7 @@
from typing import Optional
from fastapi import APIRouter, Depends, Header, Request, status
from fastapi.responses import Response
from fastapi.responses import RedirectResponse, Response
from sqlalchemy.ext.asyncio import AsyncSession
from app.database.session import get_session
@ -45,21 +45,20 @@ async def kakao_login() -> KakaoLoginResponse:
@router.get(
"/kakao/callback",
response_model=LoginResponse,
summary="카카오 로그인 콜백",
description="카카오 인가 코드를 받아 로그인/가입을 처리하고 JWT 토큰을 발급합니다.",
description="카카오 인가 코드를 받아 로그인/가입을 처리하고 프론트엔드로 리다이렉트합니다.",
)
async def kakao_callback(
request: Request,
code: str,
session: AsyncSession = Depends(get_session),
user_agent: Optional[str] = Header(None, alias="User-Agent"),
) -> LoginResponse:
) -> RedirectResponse:
"""
카카오 로그인 콜백
카카오 로그인 성공 발급받은 인가 코드로
JWT 토큰을 발급합니다.
JWT 토큰을 발급하고 프론트엔드로 리다이렉트합니다.
신규 사용자인 경우 자동으로 회원가입이 처리됩니다.
"""
@ -71,13 +70,21 @@ async def kakao_callback(
if forwarded_for:
ip_address = forwarded_for.split(",")[0].strip()
return await auth_service.kakao_login(
result = await auth_service.kakao_login(
code=code,
session=session,
user_agent=user_agent,
ip_address=ip_address,
)
# 프론트엔드로 토큰과 함께 리다이렉트
redirect_url = (
f"http://localhost:3000"
f"?access_token={result.access_token}"
f"&refresh_token={result.refresh_token}"
)
return RedirectResponse(url=redirect_url, status_code=302)
@router.post(
"/kakao/verify",