haenim

get user's timeline by twitter api

1 +
2 +
1 module.exports = function(app) 3 module.exports = function(app)
2 { 4 {
3 app.get('/',function(req,res){ //index.html 가져오기 5 app.get('/',function(req,res){ //index.html 가져오기
4 res.render('index.html') 6 res.render('index.html')
5 }); 7 });
6 8
7 - app.get('/timeline/:id',function(req,res){ 9 + // app.get('/timeline/:id',function(req,res){
8 - res.render('timeline.html') 10 + // res.render('timeline.html')
9 - }); 11 + // });
12 +
13 +
14 +
10 15
11 } 16 }
17 +
......
1 -var express = require('express'); 1 +var express = require('express'); //express 모듈 불러오기
2 var app = express(); 2 var app = express();
3 +const tweetsController = require('./twitter-controller');
3 4
4 var router = require('./router/main')(app);// 라우터 모듈인 main.js 를 불러와서 app 에 전달해줍니다. 5 var router = require('./router/main')(app);// 라우터 모듈인 main.js 를 불러와서 app 에 전달해줍니다.
5 app.set('views', __dirname + '/views'); //서버가 읽을 수 있도록 HTML 의 위치를 정의해줍니다. 6 app.set('views', __dirname + '/views'); //서버가 읽을 수 있도록 HTML 의 위치를 정의해줍니다.
6 app.set('view engine', 'ejs'); //서버가 HTML 렌더링을 할 때, EJS 엔진을 사용하도록 설정합니다. 7 app.set('view engine', 'ejs'); //서버가 HTML 렌더링을 할 때, EJS 엔진을 사용하도록 설정합니다.
7 app.engine('html', require('ejs').renderFile); 8 app.engine('html', require('ejs').renderFile);
8 9
10 +app.get('/timeline/:screen_name',tweetsController.getUserTweets); // '/timeline/:screen_name'형식의 url이 들어오면 뒤의 함수를 실행시킴
11 +
9 var server = app.listen(3000, function(){ //3000 포트 사용 12 var server = app.listen(3000, function(){ //3000 포트 사용
10 - console.log("Express server has started on port 3000") 13 + console.log("Express server has started on port 3000");
11 }) 14 })
12 15
13 app.use(express.static('public')); 16 app.use(express.static('public'));
......
1 +const Twitter = require('twitter');
2 +
3 +const client = new Twitter({
4 + consumer_key: 'Q4xyL4HBupStqkUf3FaKeDlSL',
5 + consumer_secret: 'xB9ROWLAPlPW7tntBUsFgVZd9qcaCSDDAo5fFCH1qWg7oAwJLO',
6 + access_token_key: '1330868660072660992-0l3jauBmdEP16hXPviH5W1DMS46X9B',
7 + access_token_secret: 'jx5xtDHam5SUTSndp7uVqsTpbSJiD4OIKL8IYKg1ZtTSZ'
8 +
9 +});
10 +
11 +
12 +exports.getUserTweets = async function(req, res){
13 + try{
14 + let data = client.get('statuses/user_timeline', req.params, function(error,tweets,response){ //트위터 api에서 유저의 타임라인을 가져옴 req.params에 유저 아이디가 들어있음
15 + if(!error){
16 + console.log(tweets); //가져온 타임라인 내용 콘솔창에 출력
17 + res.render('timeline.html',tweets); //timeline.html 화면에 뿌려줌 그리고 tweets값을 저 페이지로 보냄
18 + }
19 + }); //아이디를 토대로 타임라인 가져오기
20 +
21 +
22 + }catch(err){ //에러 발생하면 실행
23 + console.log(err);
24 + res.sendStatus(500);
25 + }
26 +}
...\ No newline at end of file ...\ No newline at end of file
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
23 <button class="btn-search" type="button" onclick="movePage()">SEARCH</button> 23 <button class="btn-search" type="button" onclick="movePage()">SEARCH</button>
24 </div> 24 </div>
25 <script type ="text/javascript"> 25 <script type ="text/javascript">
26 - function movePage(){ //페이지 이동을 위한 함수 26 + function movePage(){ //페이지 이동을 위한 함수 search버튼을 누르면 실행됨
27 - location.href ="/timeline/"+document.getElementById('search').value 27 + location.href ="/timeline/"+document.getElementById('search').value //url을 이렇게 변경함
28 } 28 }
29 </script> 29 </script>
30 </div> 30 </div>
......
...@@ -3,76 +3,10 @@ ...@@ -3,76 +3,10 @@
3 <body> 3 <body>
4 4
5 <script> 5 <script>
6 -
7 alert("Hello, world!"); 6 alert("Hello, world!");
8 7
9 -</script>
10 -
11 -<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
12 -<script src="http://oauth.googlecode.com/svn/code/javascript/oauth.js"></script>
13 -<script src="http://oauth.googlecode.com/svn/code/javascript/sha1.js"></script>
14 -<script type="text/javascript">
15 -$(function(){
16 - fn_twitterTimeline();
17 -});
18 -
19 -function fn_twitterTimeline(){
20 - var twitterPrm = {
21 - api: 'https://api.twitter.com/1.1/statuses/user_timeline.json',
22 - count:100,
23 - callback:"fn_makedocTwitter",
24 -
25 - consumerKey:"Q4xyL4HBupStqkUf3FaKeDlSL",
26 - consumerSecret:"xB9ROWLAPlPW7tntBUsFgVZd9qcaCSDDAo5fFCH1qWg7oAwJLO",
27 - accessToken:"1330868660072660992-0l3jauBmdEP16hXPviH5W1DMS46X9B",
28 - tokenSecret:"zQjx5xtDHam5SUTSndp7uVqsTpbSJiD4OIKL8IYKg1ZtTSZ"
29 -
30 - }
31 - var oauthMessage={
32 - method:"GET",
33 - action:twitterPrm.api,
34 - parameters:{
35 - count: twitterPrm.count,
36 - callback:twitterPrm.callback,
37 - oauth_version:"1.0",
38 - oauth_signature_method:"HMAC_SHA1",
39 - oauth_consumer_key:twitterPrm.consumerKey,
40 - oauth_token:twitterPrm.accessToken
41 - }
42 -
43 - };
44 - OAuth.setTimestampandNonce(oauthMessage);
45 - OAuth.SignatureMethod.sign(oauthMessage,{
46 - consumerSecret: twitterPrm.consumerSecret,
47 - tokenSecret:twitterPrm.tokenSecret
48 - });
49 -
50 - var twJsonpath=OAuth.addToURL(oauthMessage.action,oauthMessage.parameters);
51 -
52 - $.ajax({
53 - type:oauthMessage.method,
54 - url:twJsonpath,
55 - dataType:"jsonp",
56 - jsonp:false,
57 - cache:true
58 - });
59 -}
60 -
61 -function fn_makedocTwitter(data){
62 - <DIV id="search"></DIV>
63 - var timeLine='';
64 - var text;
65 - var dateObj=new Data;
66 - for(var i=0,len=data.length;i<len;i++){
67 - text=data[i].text;
68 - text=text.replace(/(s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:@&=+$,%#]+)/gi,'<a href="$1">$1</a>');
69 - text=text.replace(/@(\w+)/gi,'<a href="http://twiiter.com/search?q=%23$1">#$1</a>');
70 - text.text.replace(/@(\w+)/gi,'<a href="http://twitter.com/$1">@$1</a>');
71 - timeLine+="<p>"+text+"</p><p>"+dateObj+"</p>";
72 8
73 - } 9 +console.log(tweets);
74 - $('#div_snstwitter').html(timeLine);
75 -}
76 10
77 11
78 </script> 12 </script>
......