OAuth(Kakao) 흐름 #302
sgoldenbird
started this conversation in
Engineering Breakdown
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
1. ✨ 설계 배경 및 목적
사용자 편의성을 극대화하고 회원가입 및 로그인 절차를 단순화하기 위해 카카오 소셜 로그인/회원가입 기능을 지원합니다.
카카오 OAuth 인가코드의 일회성 제약과, 백엔드가 회원가입 시 닉네임을 필수로 요구하는 스펙을 만족시키기 위해 로그인과 회원가입 redirect URI를 분리하고, Transition Page를 통해 닉네임을 입력받는 흐름을 도입했습니다.
이를 통해 복잡한 인증 과정을 서버와 BFF에서 안전하게 처리하고, 사용자에게는 최대한 자연스러운 경험을 제공합니다.
2. 🧱 구성요소 및 구조
redirect URI 이원화 + Transition Page + 인가코드 두 번 발급
카카오 로그인 전체 흐름은 다음과 같습니다:
3. ⚙️ 동작 흐름 요약
4. 🔮 설계 의도 및 고려사항
5. 🪄 세부 설명: 주요 훅 / 컴포넌트 / 유틸
src/app/api/auth/kakao/signin/route.ts:
카카오 인증 콜백을 처리하고, 받은 인가 코드를 백엔드 로그인 API에 전달합니다.
로그인 실패 시 UrlMessageToast를 통해 REGISTER_REQUIRED 메시지를 전달합니다.
src/app/(auth)/kakao/transition/page.tsx:
로그인 실패 시 진입하는 중간 페이지입니다.
닉네임 입력 폼을 제공하며, 폼 제출 시 api/auth/kakao/signup 리디렉션 URI로 재요청을 유도합니다.
src/app/api/auth/kakao/signup/route.ts:
두 번째 인가 코드 콜백을 처리합니다.
URL에서 새로운 인가 코드와 state 파라미터로 전달된 닉네임을 추출하여 백엔드의 회원가입 API에 직접 전달합니다.
src/domain/Auth/utils/setAuthCookies.ts:
인증 성공 후 받은 accessToken과 refreshToken을 HTTP Only 쿠키로 안전하게 설정하는 유틸리티 함수입니다.
6. 🧩 사용 예시 및 패턴
이 컴포넌트는 로그인 실패 시 사용자가 닉네임을 입력하는 페이지입니다.
새로 발급된 인가 코드와 닉네임을 백엔드에 직접 전달하는 로직입니다.
7.⚠️ 사용 시 주의사항
8. 📎 참고 파일 및 링크
Beta Was this translation helpful? Give feedback.
All reactions