일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 마우스 오른쪽 버튼
- php
- 무료홈페이지
- 복사방지
- 새우편번호
- 웹퍼블리셔
- 자바키워드
- 자바스크립트
- 글자뒤집기
- 웹호스팅
- postcodify
- 호스팅
- 무료호스팅
- 우편번호 API
- 무료제작
- 무료서버
- 무료 홈페이지
- php호스팅
- 무료 웹 호스팅
- 홈페이지제작
- 클릭해제
- 무료사이트
- 무료 홈페이지 제작
- 웹퍼블리싱
- 문자열 뒤집기
- 퍼빌리셔
- 무료
- 우체국 우편번호
- 마우스오른쪽
- 무료 호스팅
Archives
- Today
- Total
Developer Factory
twitter node 본문
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8">
<title> 트위터 로그인 </title >
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script >
</head>
<body>
<a id='btnLogin' style=' display: none;' href= ''> 트위터 로그인 </a >
<script>
$.getJSON('http://192.168.200.63:8884/getRequestToken', function(result){
// console.log(result);
$('#btnLogin')
.attr( 'href', 'https://api.twitter.com/oauth/authorize?oauth_token=' +
result.requestToken)
.css( 'display', '');
});
</script>
</body>
</html>
twitter.js
var http = require('http');
var twitterAPI = require('node-twitter-api');
var twitter = new twitterAPI({
consumerKey: 'CRfb3IoCyEHRJnlhpdCEw', // API key
consumerSecret: 't0sWikNNsHlOlypIsVt2L5jOuiK56EFBS5i1TktGA', // API Secret Key
callback: 'http://192.168.200.63:8884/getAccessToken' // 로그인 성공 후 자동 접속할 주소
});
var reqToken , reqTokenSec ;
var accToken , accTokenSec ;
var pageControlMap = {};
pageControlMap['/getRequestToken'] = function(req , res , urlObj ) {
// 트위터로부터 요청토큰을 얻는다.
res.writeHead(200, { 'Content-Type': 'text/plain;charset=UTF-8' });
twitter.getRequestToken( function(error , requestToken , requestTokenSecret , results ){
if (error) {
console.log( "Error getting OAuth request token : ");
console.log(error);
res.end();
} else {
reqToken = requestToken;
reqTokenSec = requestTokenSecret;
res.write( '{ "requestToken": "' + requestToken + '" }' );
// console.log(res);
res.end();
}
});
};
pageControlMap['/getAccessToken'] = function(req , res , urlObj ) {
// 트위터로부터 액세스토큰을 발급받는다.
res.writeHead(200, {'Content-Type': 'text/html;charset=UTF-8'});
var oauth_verifier = urlObj.query.oauth_verifier;
twitter.getAccessToken(
reqToken, // 요청토큰
reqTokenSec, // 요청토큰 보안키
oauth_verifier, // 사용자 검증키
function(error , accessToken , accessTokenSecret , results ) {
if (error) {
console.log( "Error getting OAuth access token : ");
console.log(error);
res.end();
} else {
accToken = accessToken;
accTokenSec = accessTokenSecret;
/* res.write(' <html><head><title>redirect main</title>');
res.write('<meta http-equiv ="refresh"');
res.write(' content="1; url=http://localhost:8080/twitter/main.html">');
res.write('</head><body>');
res.write('<p>잠시후 메인 화면으로 이동합니다.</p>');
res.write('</body> </html>');*/
res.write( '<p>잠시후 메인 화면으로 이동합니다.</p>' );
res.write( '<meta http-equiv="refresh" content="1;url=http://192.168.200.63:8080/twitter/main.html">');
res.end();
}
});
};
pageControlMap['/getUserTimeline']= function(req , res , urlObj ){
res.writeHead(200, { 'Content-Type': 'text/plain;charset=UTF-8' });
twitter.getTimeline(
"user_Timeline",
{
screen_name : urlObj.query.screen_name
},
accToken,
accTokenSec,
function( error, data, response) {
if (error) {
console.log( "Error getting OAuth request token : " + error);
} else {
res.write( '[');
var isFirst = 0;
data.forEach( function(item ){
if(isFirst > 0) {
res.write( ',');
}
isFirst ++;
res.write( '{');
res.write( '"text" :' + JSON.stringify(item.text));
res.write( ', "created_at" :' + JSON.stringify(item.created_at));
res.write( ', "retweet_count" : "' + item.retweet_count + '"');
res.write( ', "favorite_count" : "' +
(item.retweeted_status ? item.retweeted_status.favorite_count : '0' ) + '"' );
res.write( '}');
});
res.write( ']');
}
res.end();
}
);
}
http.createServer(function ( req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
//크롬브라우져 AJAX에서 데이터 받고나서 뿌려주지 않는 현상해결위해
try {
//1. URL 분석: req.url -> /getRequestToken
//- 쓰기 좋도록 하기 위해
var urlObj = require( 'url').parse(req.url, true);
//require('url ') => url 객체를 사용하기 위해서 (parse, resolve, url...등)
var pageControl = pageControlMap[urlObj.pathname];
if (pageControl) {
pageControl(req, res, urlObj);
} else {
throw '요청하는 서비스를 찾을 수 없습니다.' ;
}
} catch ( err) {
res.write( '{ "error": "' + err + '" }' );
res.end();
}
}).listen(8884, '192.168.200.63');
console.log('Server running at http://192.168.200.63:8884/');
main.html
<!DOCTYPE html>
<html>
<head>
<meta charset= "UTF-8">
<title> 메인화면</title >
<style>
body {
font-size: small;
}
@font-face{ /* 폰트 정의 */
font-family: 'rosettaicons';
src:url('rosetta-icons-Regular.eot');
src:url('rosetta-icons-Regular.eot?#iefix') format('embedded-opentype'),url('rosetta-icons-Regular.woff') format('woff'),url('rosetta-icons-Regular.ttf') format('truetype');
font-style: normal;
font-weight: normal;
}
.tweetBox {
/* background: url('twitter.png') 0px 2000px; */
border: 1px solid lightgray;
margin: 5px;
width: 510px;
border-radius: 10px;
padding: 10px;
}
.tweetBox:hover {
border: 2px solid orange;
padding: 9px;
background-color: #f5f8fa;
}
.tweetHeader {
font-size: 90%;
color: red;
}
.tweetContent {
font-size: 1.2em;
}
.tweetTail {
/* border: 1px solid gray; */
font-weight: bold;
}
.retweet:before {
/* border: 1px solid gray; */
font-family: "rosettaicons";
font-size: 1.2em;
content: "\f152";
color: green;
}
.retweetCount {
/* border: 1px solid gray; */
color: green;
margin-left: 5px;
margin-right: 30px;
}
.favorite:before {
/* border: 1px solid gray; */
font-family: "rosettaicons";
font-size: 1.2em;
content: "\f147";
color: orange;
}
.favorite:hover {
/* border: 1px solid gray; */
color: orange;
}
.favoriteCount {
color: lightgray;
margin-left: 10px;
}
.favoriteCount:hover {
color: blue;
}
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script >
</head>
<body>
<h1> 트위터 데이터 조회 테스트 </h1 >
<a id='btn1' href= '#'> 사용자 타임라인 가져오기 </a ><br >
<div id="tweets"></ div>
<script>
$('#btn1').click( function(event){
event.preventDefault();
$.getJSON('http://192.168.200.63:8884/getUserTimeline?screen_name=bum3144' ,
function(result){
$.each(result, function(index, item){
$( '<div></div>')
.addClass( 'tweetBox')
.append($('<p></p>').addClass('tweetHeader' ).text(item.created_at))
.append($('<p></p>').addClass('tweetContent' ).text(item.text))
.append($( '<p></p>').addClass('tweetTail' )
.append($( '<span></span>').addClass('retweet' ))
.append($( '<span></span>').addClass('retweetCount' )
.text(item.retweet_count))
.append($( '<span></span>').addClass('favorite' ))
.append($( '<span></span>').addClass('favoriteCount' )
.text(item.favorite_count)))
.appendTo( '#tweets');
});
});
});
</script>
</body>
</html>
'Developer > Node.js' 카테고리의 다른 글
REST API (0) | 2014.06.24 |
---|---|
그림으로 보는 node-twitter-api (0) | 2014.06.23 |
node-twitter-api (0) | 2014.06.23 |
Nody.js (0) | 2014.06.23 |