본문 바로가기
  • 개발 / 공부 / 일상
Node.js

(Node.js) SNS_Kakao 간편 가입 및 로그인 구현

by JJeongHyun 2023. 9. 3.
반응형

플랫폼을 개발하는 과정에서

 

단순하게 이메일을 통한 가입이 아닌 간편 소셜 가입과 로그인 기능을 추가하게 되었다

 

크게 두 가지로 나눴다

 

  • 모든 사용자의 정보를 입력받아 가입하기
  • SNS 간편 가입

 

해당 기능에 대한 API를 혼자 다하기보다는 기능을 나눠서 진행하기로 했다

 

나는 SNS를 통한 가입 및 로그인을 맡게 되었다

 

정식으로 개발하는 단계는 아니여서 그냥 내 계정으로 테스팅을 진행하게 되었다

 

소셜 네트워크는 Kakao, Naver를 먼저 시작했다

 

그중에서도 Kakao !!

 

Kakao API를 사용하기 위해서 일단 어떻게 흘러가는지?

 

어떻게 우리가 가입 또는 로그인을 편하게 할 수 있게 도와주는지 알아야 했다

 

REST API를 알아야 하고 REDIRECT URI를 등록해야 하고 등등

 

이러한 사전설정들은 넘어가고

 

제공해 주는 오픈 API를 통해서 내가 원하는 방향으로 적절하게 사용하기 위해서

 

다음과 같은 흐름도를 생각해 봤다

 

엑세스토큰 발급 후 가입

  1. 먼저 프론트에서 Kakao 서버로 인가코드를 요청한다
  2. 요청으로 받은 인가코드를 자체백서버로 요청을 보낸다
  3. 자체 서버에서 Kakao 서버로 액세스토큰을 발급 요청을 보낸다
  4. 응답받은 액세스토큰으로 사용자 정보를 조회한다
  5. 액세스토큰을 JWT토큰으로 암호화 후 저장한다
  6. JWT토큰을 최종 응답으로 보낸다

위 과정으로 받은 JWT토큰으로 다시 자체 서버에 해당 정보를 저장하는 가입 요청을 다음과 같은 순서로 한다

 

  1. JWT토큰으로 요청을 보낸다
  2. 서버는 JWT토큰을 검증하여 액세스토큰에 접근한다
  3. 액세스토큰으로 Kakao 서버에 사용자 정보를 조회한다
  4. 조회한 정보를 자체 DB에 저장 후 요청에 대한 성공 코드를 응답한다

 

이러한 과정으로 Kakao 소셜 네트워크 가입을 구성했다

 

인가코드로 액세스토큰을 발급받는 과정이 가입 또는 로그인때 동일하기에 하나의 요청으로 만들었다

 

다음은 로그인 과정이다

 

Kakao 로그인

 

인가코드로 엑세스토큰을 발급받는 과정을 따로 API로 하기 전 구성했던 로그인 과정이다

 

어떤 흐름이 좀 더 원활한지, 효율적인지 등 사실 잘 모르겠다....

 

내가 이해한 오픈 API방식으로 결론적으로는 되긴 하니까....

 

테스트과정에서 ngrok으로 프론트 개발자랑 주고받는 과정에서 서버에서 쿠키생성 이슈가 있었지만

 

본격 인프라 구축까지 좀 더 생각해 보기로 했다

 

마지막으로 로그아웃까지 첨부해보겠다

 

로그아웃

처음에는 passport라는 라이브러리를 사용해서 했었고 기능도 잘 됐었는데

 

나중에 유지보수 및 추가개발하는 과정에서 디테일하게 컨트롤하지 못할 거 같아서

 

과감하게 버리고 그냥 API요청으로만 구현했다

'Node.js' 카테고리의 다른 글

(Node.js) node-cron 라이브러리  (0) 2024.02.23
(Node.js) MVC 디자인 패턴  (0) 2023.09.24
(Node.js) nodemailer 라이브러리  (0) 2023.08.15
(Node.js) multer  (0) 2023.01.18
(Node.js) jwt  (0) 2023.01.18