Akhidjon

kakao api setup

...@@ -2,86 +2,65 @@ var express = require('express'); ...@@ -2,86 +2,65 @@ var express = require('express');
2 var cheerio = require('cheerio'); 2 var cheerio = require('cheerio');
3 var request = require('request'); 3 var request = require('request');
4 var mysql = require('mysql'); 4 var mysql = require('mysql');
5 -var sha256 = require('js-sha256');
6 5
7 // 설명 6 // 설명
8 var client = require('cheerio-httpcli'); 7 var client = require('cheerio-httpcli');
9 -var passport = require('passport') 8 +var passport = require('passport'), KakaoStrategy = require('passport-kakao').Strategy;
10 -var KakaoStrategy = require('passport-kakao').Strategy;
11 var router = express.Router(); 9 var router = express.Router();
12 10
13 // 설명 11 // 설명
14 -var kakaoKey = { 12 +passport.use(new KakaoStrategy({
15 - clientID : 'd7ba37067bddfb0661513607bb5eddef', 13 +
16 - clientSecret : 'NZQsjsqhzDnjjMqFuEY805wBM1AwIsBY', 14 + clientID : '5634a5f8ca5c9a5eb378d6b6e6e869a0',
17 - callbackURL : 'http://localhost:3000/api/auth/kakao/callback' 15 + callbackURL :'/auth/login/kakao/callback',
18 -}; 16 + //clientSecret : 'eUtJGtlLoCZJufevp3LKfDP0KOtZUV7R'
17 +
18 + }, function(accessToken, refreshToken,params, profile, done){
19 +
20 + //사용자 정보 -> profile
21 + loginByThirdparty(accessToken, refreshToken, profile);
22 + console.log("(!)로그인 : " + profile._json.id+"("+profile._json.properties.nickname +")");
23 +
24 + //return done(null,profile)
25 + return done(null, {
26 + 'user_id': profile._json.id,
27 + 'nickname': profile._json.properties.nickname
28 +
29 + });
30 + }
31 +));
19 32
20 -passport.use("kakao-login", new KakaoStrategy(kakaoKey, function(accessToken, refreshToken, profile, done){ 33 +// kakao 로그인, // passport.authenticate('kakao',{state: "myStateValue"})
21 - var _profile = profile._json; 34 +router.get('/auth/login/kakao', passport.authenticate('kakao'));
22 - console.log("error1");
23 - //사용자 정보는 profile에
24 - loginByThirdparty({
25 - 'auth_type': 'kakao',
26 - 'auth_id': _profile.id,
27 - 'auth_name': _profile.properties.nickname,
28 - 'auth_email': _profile.id
29 - }, done);
30 - console.log("(!)로그인 : " + profile._json.id + "(" + profile._json.properties.nickname + ")" );
31 - console.log("error2");
32 -}));
33 -
34 -// kakao 로그인, // passport.authenticate('kakao',{state: "myStateValue"})
35 -router.get('/api/auth/kakao', passport.authenticate('kakao-login'));
36 35
37 // kakao 로그인 연동 콜백 36 // kakao 로그인 연동 콜백
38 -router.get('/api/auth/kakao/callback', passport.authenticate('kakao-login', { 37 +router.get('/auth/login/kakao/callback', passport.authenticate('kakao', {
39 - //session: false, 38 +
40 - successRedirect: '/routes/mytoons', 39 + //session: false,
41 - failureRedirect: '/' 40 + successRedirect: '/mytoons',
42 - }) 41 + failureRedirect: '/'
42 + })
43 ); 43 );
44 44
45 // 설명 45 // 설명
46 -function loginByThirdparty(info, done) { 46 +function loginByThirdparty(accessToken, refreshToken, profile) {
47 - console.log("error3"); 47 + // 예전 코드는 MySQL 버젼이 맞지 않음
48 - // 예전 코드는 MySQL 버젼이 맞지 않음 48 + // var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);'
49 - // var sql = 'INSERT INTO `user`(id) VALUES(?) ON DUPLICATE KEY(PRIMARY) UPDATE id=(?);' 49 + var sql = "INSERT INTO `user` (id) VALUES (?) ON DUPLICATE KEY UPDATE id=id";
50 - var sql = 'select *from `user` where `user_id` = ?'; 50 + var kid=[profile._json.id];
51 - 51 + connection.query(sql,kid,function(err,result){
52 - connection.query(sql, info.auth_id, function(err,result){ 52 + if (err) {
53 - if (err) { 53 + console.log("로그인 쿼리중 에러 : " + err);
54 - return done(err); 54 + } else {
55 - } else { 55 + console.log("로그인 DB처리 완료!");
56 - if (result.length === 0) { 56 + }
57 - // 신규 유저는 회원 가입 이후 로그인 처리 57 + });
58 - var stmt_thridparty_signup = 'insert into `user` set `user_id`= ?, `nickname`= ?';
59 - connection.query(stmt_thridparty_signup, [info.auth_id, info.auth_name], function (err, result) {
60 - if(err){
61 - return done(err);
62 - }else{
63 - done(null, {
64 - 'user_id': info.auth_id,
65 - 'nickname': info.auth_name
66 - });
67 - }
68 - });
69 - } else {
70 - //기존유저 로그인 처리
71 - console.log('Old User');
72 - done(null, {
73 - 'user_id': result[0].user_id,
74 - 'nickname': result[0].nickname
75 - });
76 - }
77 - }
78 - });
79 } 58 }
80 59
81 // 설명 60 // 설명
82 -router.get('/api/auth/logout/kakao',function (req,res) { 61 +router.get('/auth/logout/kakao',function (req,res) {
83 - req.logout(); 62 + req.logout();
84 - res.redirect('/'); 63 + res.redirect('/');
85 }) 64 })
86 65
87 // 66 //
...@@ -95,35 +74,35 @@ allWebtoons = new Array(); ...@@ -95,35 +74,35 @@ allWebtoons = new Array();
95 // 설명 74 // 설명
96 function getAllToons() { 75 function getAllToons() {
97 76
98 - allWebtoonList = new Array(); 77 + allWebtoonList = new Array();
99 78
100 - //월요일 다음 웹툰 79 + //월요일 다음 웹툰
101 - var mon='mon'; 80 + var mon='mon';
102 - var mon_name='MON'; 81 + var mon_name='MON';
103 - var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`; 82 + var daum = `http://webtoon.daum.net/data/pc/webtoon/list_serialized/${mon}?timeStamp=1515819276574`;
104 - var site = 'daum'; 83 + var site = 'daum';
105 84
106 - client.fetch(daum, {}, function (err, $, res, body) { 85 + client.fetch(daum, {}, function (err, $, res, body) {
107 86
108 - var data = JSON.parse(body); 87 + var data = JSON.parse(body);
109 - var list = data["data"]; 88 + var list = data["data"];
110 89
111 - list.forEach(function (item, idx) { 90 + list.forEach(function (item, idx) {
112 91
113 - var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString(); 92 + var webtoon_link = 'http://webtoon.daum.net/webtoon/view/' + item.nickname.toString();
114 - var webtoon = { 93 + var webtoon = {
115 - toon_index: item.id, 94 + toon_index: item.id,
116 - name: item.title, 95 + name: item.title,
117 - thum_link: item.pcThumbnailImage.url, 96 + thum_link: item.pcThumbnailImage.url,
118 - webtoon_link: webtoon_link, 97 + webtoon_link: webtoon_link,
119 - week :mon_name, 98 + week :mon_name,
120 - site: site, 99 + site: site,
121 - latest: 0 100 + latest: 0
122 - }; 101 + };
123 102
124 - allWebtoonList.push(webtoon); 103 + allWebtoonList.push(webtoon);
104 + });
125 }); 105 });
126 - });
127 106
128 //화요일 다음 웹툰 107 //화요일 다음 웹툰
129 var tue='tue'; 108 var tue='tue';
...@@ -274,6 +253,9 @@ function getAllToons() { ...@@ -274,6 +253,9 @@ function getAllToons() {
274 }); 253 });
275 }); 254 });
276 255
256 +
257 +
258 +
277 //네이버 웹툰 259 //네이버 웹툰
278 var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn"; 260 var allWeeklyToonsUrl = "http://comic.naver.com/webtoon/weekday.nhn";
279 request(allWeeklyToonsUrl,function (err, res, html) { 261 request(allWeeklyToonsUrl,function (err, res, html) {
...@@ -316,6 +298,9 @@ function getAllToons() { ...@@ -316,6 +298,9 @@ function getAllToons() {
316 }); 298 });
317 } 299 }
318 }); 300 });
301 +
302 +
303 +
319 allWebtoons = allWebtoonList; 304 allWebtoons = allWebtoonList;
320 }; 305 };
321 306
......