Skip to content

OAuth(Kakao) 흐름 ING #301

Closed
Closed

Description

@sgoldenbird

1. ✨ 설계 배경 및 목적

2. 🧱 구성요소 및 구조

카카오 로그인 전체 흐름
이 코드는 사용자가 카카오 버튼을 클릭한 순간부터 우리 서비스에 로그인이 완료되기까지의 모든 과정을 서버에서 처리합니다. 전체 흐름은 다음과 같습니다.

(사용자) 로그인 또는 회원가입 페이지에서 "카카오로 시작하기" 버튼을 클릭합니다.

(프론트엔드 → 카카오) 브라우저는 카카오 인증 페이지로 이동합니다. 사용자는 여기서 동의하고 계속하기를 누릅니다.

(카카오 → 우리 서버) 카카오가 사용자를 우리 서버의 특정 주소(/api/auth/kakao/callback)로 돌려보냅니다. 이때 URL에는 '인가 코드(code)'와 사용자의 최초 의도('state')가 담겨 있습니다.

(우리 서버: GET 함수 실행)

1단계: 카카오와 통신

우리 서버는 받은 '인가 코드'를 카카오 서버로 보내 진짜 사용자 정보와 교환하기 위한 **'액세스 토큰'**을 받아옵니다.

다시 그 '액세스 토큰'을 카카오 서버로 보내 최종적으로 사용자의 이메일, 닉네임, 고유 ID를 얻습니다.

2단계: 의도 파악 및 작업 분배

사용자가 처음에 '회원가입' 버튼을 눌렀는지('signup'), '로그인' 버튼을 눌렀는지(state 값) 확인합니다.

회원가입 의도였다면 → handleOauthSignUp 함수를 호출합니다.

로그인 의도였다면 → handleOauthSignIn 함수를 호출합니다.

(우리 서버: handleOauth... 함수 실행)

해당 함수는 카카오에서 받은 사용자 정보를 가지고, 우리 서비스의 메인 백엔드 API(.../oauth/sign-in/kakao 또는 .../sign-up/kakao)를 호출합니다.

(메인 백엔드 → 우리 서버)

성공 시: 메인 백엔드는 우리 서비스에서 사용할 **'accessToken'과 'refreshToken'**을 보내줍니다.

실패 시: 왜 실패했는지에 대한 에러 정보를 보내줍니다. (예: 이미 가입된 계정, 없는 계정 등)

(우리 서버 → 사용자)

로그인/회원가입 성공 시: 우리 서버는 받은 토큰들을 쿠키에 안전하게 저장한 후, 사용자를 메인 페이지(/)로 보냅니다.

실패 시: 에러 종류에 따라 적절한 에러 메시지와 함께 로그인(/signin) 또는 회원가입(/signup) 페이지로 보냅니다.

3. ⚙️ 동작 흐름 요약

4. 🔮 설계 의도 및 고려사항

5. 🪄 세부 설명: 주요 훅 / 컴포넌트 / 유틸

6. 🧩 사용 예시 및 패턴

7. ⚠️ 사용 시 주의사항

8. 📎 참고 파일 및 링크

Activity

  1. locked and limited conversation to collaborators on Jul 24, 2025
  2. converted this issue into a discussion #302 on Jul 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions