카카오 소셜 로그인, 회원가입 흐름 설계 전략: 인가코드 일회성, 분리된 백엔드, UX 혼란 해결
#500
sgoldenbird
started this conversation in
Trouble Shooting
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.
-
🐞 문제 상황 (Problem Description)
카카오 소셜 로그인 기능을 제공하며 다음과 같은 상황적인 제약으로 인해 구조에 대해 고민하게되었습니다:
💻 환경 정보 (Environment)
🔍 발생 원인 분석 (Investigation)
카카오 OAuth 자체는 로그인/회원가입 통합 흐름을 권장하지만, 우리 백엔드는 아래와 같은 이유로 완전한 통합 흐름을 구현하기 어려움:
이로 인해 사용자 시나리오에서 다음과 같은 문제 발생:
🛠 시도해본 해결 방법 (Attempts)
✅방식 1: 단일 redirect URI, 두개의 버튼 → state 파라미터 활용 intent 분기, 분기된 흐름
1단계: OAuth.tsx - 카카오로 떠날 때
state에 intent 담기2단계: callback/route.ts에서 state로 의도 분기
이제 콜백 API는 카카오로부터 사용자가 처음에 어떤 버튼을 눌렀는지(state) 알 수 있습니다.
❌ 단점
✅방식 2: 두개의 redirect URI, 두개의 버튼, 분기된 흐름
❌단점
✅방식 3: 두개의 redirect URI, 하나의 통합 버튼, 하나의 흐름
✅ 최종 해결 방법 (Final Solution)
방식 3 (두 개의 redirect URI + 하나의 통합 버튼 + 인가코드 두 번 발급) 으로 구현
이 방식으로
💡 알게 된 점 (Lessons Learned)
인가 코드의 일회성
한 번 로그인 시도에 사용되면 같은 코드로 회원가입 시도는 불가능하다.
redirect uri 분리의 필요성
백엔드 API 스펙의 영향
nickname파라미터를 필수로 요구하여, kakao transition page를 만들고 사용자로부터 닉네임을 입력받도록 설계했음 → 백엔드 API 설계에 따라 클라이언트 흐름도 바뀐다는 점을 체감.사용자 경험과 인증 흐름의 균형
🔗 참고자료 / 관련 이슈, PR
Beta Was this translation helpful? Give feedback.
All reactions