일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 마우스 오른쪽 버튼
- 웹퍼블리싱
- 무료홈페이지
- 무료
- 무료 호스팅
- 무료사이트
- 무료제작
- 클릭해제
- postcodify
- 복사방지
- 무료 홈페이지
- php
- 글자뒤집기
- 무료서버
- 무료 홈페이지 제작
- 웹퍼블리셔
- 우체국 우편번호
- 웹호스팅
- 문자열 뒤집기
- 호스팅
- 새우편번호
- 자바키워드
- php호스팅
- 홈페이지제작
- 퍼빌리셔
- 무료 웹 호스팅
- 우편번호 API
- 마우스오른쪽
- 자바스크립트
- 무료호스팅
Archives
- Today
- Total
Developer Factory
node-twitter-api 본문
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){
$('#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: 'xxxxxxxxx', // API key
consumerSecret: 'xxxxxxxxxxxx', // 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( '{');
res.write( ' "requestToken": "' + requestToken + '"' );
res.write( '}');
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.end();
}
});
};
pageControlMap['/getUserTimeline'] = function(req , res , urlObj ) {
res.writeHead(200, { 'Content-Type': 'text/plain;charset=UTF-8' });
twitter.getTimeline(
'user_timeline', // type
{screen_name: urlObj.query.screen_name}, // params
accToken, // accessToken
accTokenSec, // accessTokenSecret
function(error , data ){ // callback: 작업을 완료했을 때 호출할 함수
if (error) {
console.log(error);
res.write( '{"error": "오류!"' );
} else {
res.write( '[');
var isFirst = true;
data.forEach( function(item ){
isFirst || res.write( ',');
isFirst && (isFirst = false);
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', '*');
try {
//1. URL 분석: req.url -> /getRequestToken
//- 쓰기 좋도록 하기 위해
var urlObj = require( 'url').parse(req.url, true);
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 >
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" ></script >
<style>
body {
font-size: small;
}
.tweetBox{
/* background: url('twitter.png') 0px 1900px; */
border: 1px solid lightgray;
margin: 10px;
padding: 10px;
width: 510px;
border-radius: 10px ;
}
.tweetBox:hover {
border: 2px solid orange;
background-color: #e1e8ed ;
padding: 9px;
}
.tweetHeader{
font-size: 80%; /* 0.8em */
color: red;
}
.tweetContent{
font-size: 1.2em;
}
.tweetTail{
font-weight: bold ;
}
.retweetCount{
color: green;
margin-right: 30px ;
}
.favoriteCount{
color: lightgray;
}
.favoriteCount:hover{
color: blue;
}
</style>
</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){
console.log(result);
/*
result.forEach(function(item){
var div = null;
var topDiv = $("#tweets");
topDiv.append($('<div></div>')
.addClass('tweetBox')
.html('[작성일] ' + item.created_at + '<br><br>')
.append(item.text + '<br><br>')
.append($('<img/>').attr('src','re.png'))
.append(' 리트윗 : ' + item.retweet_count )
.append(' ')
.append($('<img/>').attr('src','fa.png'))
.append(' 추천 : ' +item.favorite_count));
*/
$.each(result, function(index, item){
$( '<div></div>')
.addClass( 'tweetBox')
.append($( '<p></p>').text(item.created_at).addClass('tweetHeader' ))
.append($( '<p></p>').text(item.text).addClass('tweetContent' ))
.append($( '<p></p>').addClass('tweetTail' ))
.append($( '<span></span>').addClass('retweetCount' )
.text(item.retweet_count))
.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 |
twitter node (0) | 2014.06.23 |
Nody.js (0) | 2014.06.23 |