Compare commits
2 Commits
8ae2a68ae4
...
a6daff4e38
| Author | SHA1 | Date |
|---|---|---|
|
|
a6daff4e38 | |
|
|
72e06ee951 |
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Reference in New Issue