ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [NodeJS] Passport로 카카오 로그인 구현하기
    Server/NodeJS 2020. 10. 27. 22:36
    728x90
    반응형

    이번 글에서는 Passport 모듈을 이용하여 카카오 로그인을 구현하는 것에 대해서 정리하려 합니다.  

     

    먼저 카카오 개발자 페이지로 먼저 들어가보겠습니다.

    그리고 [내 어플리케이션]을 클릭해보겠습니다.

    여기서 [애플리케이션 추가하기]를 클릭해서 하나 만들어보겠습니다. 이것을 만들면 REST API Key를 발급받을 수 있는데 이것이 있어야 카카오 로그인을 구현할 수 있습니다.

     

    그러면 위와 같이 [앱 키]를 발급 받을 수 있습니다. 우리가 사용할 것은 [REST API 키] 이다. 그리고 나서 Redirect URI 등록을 해줘야 한다. 이유는 아래 코드를 보면서 설명하겠습니다. 

     

     

    Redirect URI 등록

    위와 같이 본인이 사용할 URI를 설정하면 되는데 필자는 [http://localhost:3000/auth/kakao/callback]이라고 했다.

    그리고 아래는 나중에 [동의 화면]을 사용자에게 받는데 자신의 서비스에 맞게 필요한 것을 설정하면된다. 

     

     

    동의 화면 설정

     

    이제 코드로 카카오 로그인을 구현해보면서 위의 내용들을 확인해보자. 

     

     

     

    프로젝트 세팅

    Express 프로젝트 이름
    Express kakao_login
    cd kakao_login
    npm install passport passport-kakao

    위와 같이 Express 프로젝트를 만든 후에 필요한 모듈을 설치를 하겠습니다.

     

     

    routes/index.js

    const express = require('express');
    const router = express.Router();
    
    router.use('/auth', require('./auth'));
    
    module.exports = router;

    index.js에 우리가 카카오 로그인 구현 코드를 넣은 auth.js를 위와 같이 연결하자.

     

     

    routes/auth.js

    const express = require('express');
    const router = express.Router();
    const passport = require('passport')
    const KakaoStrategy = require('passport-kakao').Strategy;
    
    passport.use('kakao', new KakaoStrategy({
        clientID: '카카오에서 발급받은 REST API Key 넣기',
        callbackURL: '/auth/kakao/callback',     // 위에서 설정한 Redirect URI
      }, async (accessToken, refreshToken, profile, done) => {
        //console.log(profile);
        console.log(accessToken);
        console.log(refreshToken);
    }))
    
    
    router.get('/kakao', passport.authenticate('kakao'));
    
    router.get('/kakao/callback', passport.authenticate('kakao', {
      failureRedirect: '/',
    }), (res, req) => {
      res.redirect('/auth');
    });
    
    module.exports = router;

    위의 코드의 로직은 아래와 같습니다.

     

    1. /auth/kakao로 요청을 보내면 new KakaoStrategy를 통해서 ClientID를 담아 카카오 서버로 인증을 요청합니다.
    2. 인증이 성공하면 /auth/kakao/callback으로 응답이 오게 됩니다. (accessToken, refreshToken, profile)

     

     

    그리고 npm start를 통해서 서버를 시작한 후에 크롬에서 요청을 보내보겠습니다.

     

     

    카카오 로그인 페이지

    그러면 위와 같이 [로그인 페이지]가 응답으로 오는 것을 확인할 수 있습니다. 그리고 로그인을 하면 accessToken, refreshToken도 카카오 서버로부터 받아 콘솔에 찍히는 것도 확인할 수 있습니다.

    반응형

    댓글

Designed by Tistory.