기능 구현

[기능] 소셜로그인 구현 플로우 및 역할(RN + NestJS + MongoDB)

Fo_rdang 2025. 9. 2. 17:05
반응형

01. 개발 진행중인 앱 스택 

- 클라이언트: React Native 

- 백엔드: Nest.js + MongoDB

 

02. 로그인 플로우 

1. 앱에서 Google/Kakao OAuth => id_token(구글) or access_token(카카오) 획득 

2. 앱이 이 토큰을 NestJS 서버로 전송 

3. 서버에서 공식 방식으로 검증 

 - Google: id_token 서명 검증 + aud/iss 체크 

 - Kakao: access_token으로 /v2/user/me 호출 

4. DB에서 사용자 조회, 없으면 upsert (새로 만든다는 뜻) 

5. 서버에서 JWT 발급 (짧은 access token + 긴 refrest token)

6. 앱은 access token을 써서 API 호출 

 

03. FE, BE 역할 

1. FE

1)expo-auth-session으로google/kakao 로그인 화면띄움 

2) 로그인 성공시, 

 - 구글:id_token획득 

 - 카카오:access_token획득  

3) 획득한 토큰을 NestJS 서버로 전달 (ex: /auth/google, /auth/kakao)

 

2. BE 

1) 전달받은 토큰 검증 

- 구글:id_token=>OAuth2Client로 서명 + aud/iss 검증 

- 카카오:access_token=> Kakao API/v2/user/me호출로 사용자 ID 확인 

 

2) DB 작업 

- 해당 provider + providerId 로 사용자 조회 

- 없으면, 신규 생성 (upsert) 

 

3) JWT 발급 

- 짧은 수명 access token + 긴 수명 refresh token 

- 앱은 이후 API 호출할 때 access token 사용 

 

 

반응형