Akhidjon

kakao api setup

......@@ -2,86 +2,65 @@ var express = require('express');
var cheerio = require('cheerio');
var request = require('request');
var mysql = require('mysql');
var sha256 = require('js-sha256');
// 설명
var client = require('cheerio-httpcli');
var passport = require('passport')
var KakaoStrategy = require('passport-kakao').Strategy;
var passport = require('passport'), KakaoStrategy = require('passport-kakao').Strategy;
var router = express.Router();
// 설명
var kakaoKey = {
clientID : 'd7ba37067bddfb0661513607bb5eddef',
clientSecret : 'NZQsjsqhzDnjjMqFuEY805wBM1AwIsBY',
callbackURL : 'http://localhost:3000/api/auth/kakao/callback'
};
passport.use(new KakaoStrategy({
clientID : '5634a5f8ca5c9a5eb378d6b6e6e869a0',
callbackURL :'/auth/login/kakao/callback',
//clientSecret : 'eUtJGtlLoCZJufevp3LKfDP0KOtZUV7R'
}, function(accessToken, refreshToken,params, profile, done){
//사용자 정보 -> profile
loginByThirdparty(accessToken, refreshToken, profile);
console.log("(!)로그인 : " + profile._json.id+"("+profile._json.properties.nickname +")");
//return done(null,profile)
return done(null, {
'user_id': profile._json.id,
'nickname': profile._json.properties.nickname
});
}
));
passport.use("kakao-login", new KakaoStrategy(kakaoKey, function(accessToken, refreshToken, profile, done){
var _profile = profile._json;
console.log("error1");
//사용자 정보는 profile에
loginByThirdparty({
'auth_type': 'kakao',
'auth_id': _profile.id,
'auth_name': _profile.properties.nickname,
'auth_email': _profile.id
}, done);
console.log("(!)로그인 : " + profile._json.id + "(" + profile._json.properties.nickname + ")" );
console.log("error2");
}));
// kakao 로그인, // passport.authenticate('kakao',{state: "myStateValue"})
router.get('/api/auth/kakao', passport.authenticate('kakao-login'));
// kakao 로그인, // passport.authenticate('kakao',{state: "myStateValue"})
router.get('/auth/login/kakao', passport.authenticate('kakao'));
// kakao 로그인 연동 콜백
router.get('/api/auth/kakao/callback', passport.authenticate('kakao-login', {
//session: false,
successRedirect: '/routes/mytoons',
failureRedirect: '/'
})
router.get('/auth/login/kakao/callback', passport.authenticate('kakao', {
//session: false,
successRedirect: '/mytoons',
failureRedirect: '/'
})
);
// 설명
function loginByThirdparty(info, done) {
console.log("error3");
// 예전 코드는 MySQL 버젼이 맞지 않음
// var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);'
var sql = 'select *from `user` where `user_id` = ?';
connection.query(sql, info.auth_id, function(err,result){
if (err) {
return done(err);
} else {
if (result.length === 0) {
// 신규 유저는 회원 가입 이후 로그인 처리
var stmt_thridparty_signup = 'insert into `user` set `user_id`= ?, `nickname`= ?';
connection.query(stmt_thridparty_signup, [info.auth_id, info.auth_name], function (err, result) {
if(err){
return done(err);
}else{
done(null, {
'user_id': info.auth_id,
'nickname': info.auth_name
});
}
});
} else {
//기존유저 로그인 처리
console.log('Old User');
done(null, {
'user_id': result[0].user_id,
'nickname': result[0].nickname
});
}
}
});
function loginByThirdparty(accessToken, refreshToken, profile) {
// 예전 코드는 MySQL 버젼이 맞지 않음
// var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);'
var sql = "INSERT INTO `user` (id) VALUES (?) ON DUPLICATE KEY UPDATE id=id";
var kid=[profile._json.id];
connection.query(sql,kid,function(err,result){
if (err) {
console.log("로그인 쿼리중 에러 : " + err);
} else {
console.log("로그인 DB처리 완료!");
}
});
}
// 설명
router.get('/api/auth/logout/kakao',function (req,res) {
req.logout();
res.redirect('/');
router.get('/auth/logout/kakao',function (req,res) {
req.logout();
res.redirect('/');
})
//
......@@ -95,35 +74,35 @@ allWebtoons = new Array();
// 설명
function getAllToons() {
allWebtoonList = new Array();
allWebtoonList = new Array();
//월요일 다음 웹툰
var mon='mon';
var mon_name='MON';
var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`;
var site = 'daum';
//월요일 다음 웹툰
var mon='mon';
var mon_name='MON';
var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`;
var site = 'daum';
client.fetch(daum, {}, function (err, $, res, body) {
client.fetch(daum, {}, function (err, $, res, body) {
var data = JSON.parse(body);
var list = data["data"];
var data = JSON.parse(body);
var list = data["data"];
list.forEach(function (item, idx) {
list.forEach(function (item, idx) {
var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString();
var webtoon = {
toon_index: item.id,
name: item.title,
thum_link: item.pcThumbnailImage.url,
webtoon_link: webtoon_link,
week :mon_name,
site: site,
latest: 0
};
var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString();
var webtoon = {
toon_index: item.id,
name: item.title,
thum_link: item.pcThumbnailImage.url,
webtoon_link: webtoon_link,
week :mon_name,
site: site,
latest: 0
};
allWebtoonList.push(webtoon);
allWebtoonList.push(webtoon);
});
});
});
//화요일 다음 웹툰
var tue='tue';
......@@ -274,6 +253,9 @@ function getAllToons() {
});
});
//네이버 웹툰
var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn";
request(allWeeklyToonsUrl,function (err, res, html) {
......@@ -316,6 +298,9 @@ function getAllToons() {
});
}
});
allWebtoons = allWebtoonList;
};
......