Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Hyunjong Lee
/
YTMT
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Akhidjon
2019-05-24 18:12:18 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
2d0d7490fc56b0f9688e41745a4095db5b540ee4
2d0d7490
1 parent
545b0a84
kakao api setup
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
72 additions
and
87 deletions
routes/index.js
routes/index.js
View file @
2d0d749
...
...
@@ -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
(
'/a
pi/a
uth/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
;
};
...
...
Please
register
or
login
to post a comment