Node.js

카카오 로그인 작업

쿠와와 2021. 1. 6. 14:38

developers.kakao.com/

홈페이지에 들어가 로그인을 한 후 내 어플리케이션을 등록한다. 

 

만든 애플리케이션을 클릭한 후 목록에 들어가 플랫폼을 클릭한다. 

 

 

카카오 로그인에 들어가 활성화를 해준다. 그리고 밑에 있는 Redirect URI를 수정해준다.

 

다음은 동의 항목에 들어가서 받을 것들을 선택하면 된다.

 

사용법은 목록에 있던 앱키에 들어가 Rest_API 키를 복사해 .env 파일에 KAKAO_ID=Rest_API_key

이렇식으로 추가해주면 된다. 

 

pastposs/kakaoStrategy.js

const passport = require('passport');
const KakaoStrategy = require('passport-kakao').Strategy;

const User = require('../models/user');

module.exports = () => {
  passport.use(new KakaoStrategy({
    clientID: process.env.KAKAO_ID,
    callbackURL: '/auth/kakao/callback',
  }, async (accessToken, refreshToken, profile, done) => {  // QAUTH2 공부하면 됨
    console.log('kakao profile', profile);
    try {
      const exUser = await User.findOne({
        where: { snsId: profile.id, provider: 'kakao' },
      });
      if (exUser) {   // 이미 회원가입 되있으면 바로 로그인 
        done(null, exUser);
      } else {      // 그렇지 않다면 바로 회원가입 해버림
        const newUser = await User.create({
          email: profile._json && profile._json.kakao_account_email,  // 이메일은 여기 들어가 있음
          nick: profile.displayName,
          snsId: profile.id,
          provider: 'kakao',
        });
        done(null, newUser);
      }
    } catch (error) {
      console.error(error);
      done(error);
    }
  }));
};

 

auth.js에 아래 코드를 추가해주면 된다. 

// 카카오 로그인 하기 
router.get('/kakao', passport.authenticate('kakao'));

// 공백이 어떻게 진행 되는지 확인해보자 
router.get('/kakao/callback', passport.authenticate('kakao', {
  failureRedirect: '/',
}), (req, res) => {
  res.redirect('/');
});