배경 / 목적
MVP 기능범위와 API 명세 §3.1이 Google·Kakao·Naver 3사 소셜 로그인을 요구하는데, 인증 골격 티켓(#32)에서는 Google 하나만 구현합니다. 남은 두 provider를 추가해 명세된 범위를 채웁니다.
인증 기반과 토큰 발급 구조는 #32에서 이미 완성되므로, provider 등록과 사용자 정보 정규화가 주 작업입니다.
Jira (필수)
상위/관련 GitHub Issue
상세 내용
- Kakao, Naver OAuth 클라이언트 등록과 설정 추가
- 각 provider의 사용자 정보 응답을 공통 형태(
OAuthUserInfo)로 정규화해 member·social_account 생성 로직에 연결
- 식별자는 provider가 발급한 값을 씁니다 — Google
sub, Kakao id, Naver response.id. 이메일·닉네임을 식별 기준으로 쓰지 않습니다 (06 §2.2)
- 숫자로 보이는 값도 문자열로 저장합니다
- 리다이렉트 URI에 context path
/api/core 포함
social_account의 provider 값 처리와 UNIQUE(provider, provider_user_id) 부분 유니크 확인
- client id/secret은 환경변수 주입.
.env.example에 키 이름만 추가
email은 공급자가 미제공·미동의 시 null일 수 있습니다(06 §2.2). 정규화 계층이 이를 허용해야 합니다.
할 일
완료 조건
배경 / 목적
MVP 기능범위와 API 명세 §3.1이 Google·Kakao·Naver 3사 소셜 로그인을 요구하는데, 인증 골격 티켓(#32)에서는 Google 하나만 구현합니다. 남은 두 provider를 추가해 명세된 범위를 채웁니다.
인증 기반과 토큰 발급 구조는 #32에서 이미 완성되므로, provider 등록과 사용자 정보 정규화가 주 작업입니다.
Jira (필수)
[BE] 소셜 로그인 및 계정 관리상위/관련 GitHub Issue
상세 내용
OAuthUserInfo)로 정규화해member·social_account생성 로직에 연결sub, Kakaoid, Naverresponse.id. 이메일·닉네임을 식별 기준으로 쓰지 않습니다 (06 §2.2)/api/core포함social_account의provider값 처리와UNIQUE(provider, provider_user_id)부분 유니크 확인.env.example에 키 이름만 추가email은 공급자가 미제공·미동의 시null일 수 있습니다(06 §2.2). 정규화 계층이 이를 허용해야 합니다.할 일
OAuthUserInfo정규화에 두 provider 추가.env.example에 client id/secret 키 이름 추가완료 조건
member와social_account가 생성되고 인증 쿠키가 발급된다member가 추가 생성되지 않는다social_account로 생성된다email이null인 응답에서도 가입이 성공한다./gradlew clean check --no-daemon통과08_API_명세§3.1 지원 provider 목록이 구현과 일치한다