C#/수업내용

2020.09.10. 수업내용 - 카카오 로그인

dev_sr 2020. 9. 10. 11:56

카카오 디벨로퍼스 접속

로그인하고 어플리케이션 등록

앱 이름을 적고 플랫폼 -> Web -> 도메인 적어줌

 

카카오 로그인에서 Redirect URI 에 callback url 적어주고

활성화 해줌

 

 

동의항목에 가서 필요한 거 동의로 바꿔줌

로그인 할 때 동의 여부가 나옴

 

 

 

passport-kakao

kakao oauth2 login module

www.npmjs.com

node에서 npm 설치하고

npm i passport-kakao passport 해서

kakao passport 와 passport 둘다 설치해줌

 

 

요약정보나 앱키를 가면 REST API 키가 나오는데 복사해줌

 

 

코드

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

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

var client_id = "REST API KEY"; //REST API KEY
var callback_url = "http://localhost:3000/kakao/callback";

passport.serializeUser((user, done) => {
  done(null, user);
});
passport.deserializeUser((obj, done) => {
  done(null, obj);
});

passport.use('login-kakao', new KakaoStrategy({

    clientID: client_id,
    callbackURL: callback_url,
  },
  (accessToken, refreshToken, profile, done) => {
    console.log(profile);
    done(null, profile);
  }

));

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var kakaoRouter = require('./routes/kakao');


var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({
  extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(passport.initialize());
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/kakao', kakaoRouter);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
var express = require('express');
const passport = require('passport');
var router = express.Router();

/* GET users listing. */
router.get('/', passport.authenticate('login-kakao', null), (req, res) => {
    console.log("kakao failed, stopped");
});

//콜백 라우터
router.get('/callback', (req, res, next) => {
    passport.authenticate('login-kakao', (err, user) => {
        if (err) {
            console.log(err);
            res.send(err);
        } else {
            console.log(user);
            res.send(user);
        }
    })(req, res);
});

module.exports = router;

실행하면 json 파일로 유저 개인정보가 쭉 나오는데 json online 뷰어로 볼 수 있다.