2013-08-14 8 views
0

이 코드는 제대로 작동하지만 따르는 사람들뿐만 아니라 트위터도 검색하는 것으로 보입니다. 내 타임 라인 트윗을 받고 싶습니다. 어떻게해야합니까?노드 JS를 사용하여 공개 트위터 타임 라인 대신 내 트위터 타임 라인 가져 오기

var open = require('open'); 
var sys = require('sys'); 
var spawn = require('child_process').spawn 
var OAuth= require('oauth').OAuth; 
var express = require("express"); 
var util = require('./util'); 
var app = express(); 

var oa = new OAuth(
    "https://api.twitter.com/oauth/request_token", 
    "https://api.twitter.com/oauth/access_token", 
    "NeFpQZNDapDtFJnUXDe0Q", 
    "mXf7AKYJWIdiToKuSgsTm2me0GBA1aNn39uskmEoOM", 
    "1.0", 
    "http://127.0.0.1:8080/twitterCallback", 
    "HMAC-SHA1" 
); 
var oauthtoken ,oauthtokensecret; 
{ 
    oa.getOAuthRequestToken(function(error, oauth_token, oauth_token_secret, results){ 
    if (error) { 
     console.log(error); 
     res.send("yeah no. didn't work.") 
    } 
    else { 
     oauthtoken = oauth_token; 
     oauthtokensecret = oauth_token_secret;  
     open('http://twitter.com/oauth/authenticate?oauth_token='+oauthtoken); 
    } 

    }); 
} 

var http = require('http'); 
var fs = require('fs'); 
function readFile(fileName,response){ 
    fs.readFile(fileName, function (err,data) { 
    if (err) { 
    return console.log(err); 
    } 
    response.end(data); 
}); 
} 

var server = http.createServer(function(req, res) { 

    if(req.url == '/favicon.ico'){ 
     res.end('Hello Http'); 
    }else if(req.url.indexOf('twitterCallback') != -1){ 

     res.writeHead(200); 
     res.end('Hello Http'); 
     var url = require('url'); 
     var url_parts = url.parse(req.url, true); 
     var query = url_parts.query; 
     var oauth_verifier = query.oauth_verifier; 
     console.log(oauth_verifier); 
     oa.getOAuthAccessToken(oauthtoken,oauthtokensecret,query.oauth_verifier, function(error, oauth_access_token, oauth_access_token_secret, results) 
     { 
      if (error){ 
      console.log(error); 
      } else { 
      //console.log("oauth_access_token = " + oauth_access_token); 
      //console.log("oauth_access_token_secret = " + oauth_access_token_secret); 
      } 
      var twitter = require('ntwitter'); 

      var twit = new twitter({ 
      consumer_key: 'NeFpQZNDapDtFJnUXDe0Q', 
      consumer_secret: 'mXf7AKYJWIdiToKuSgsTm2me0GBA1aNn39uskmEoOM', 
      access_token_key: oauth_access_token, 
      access_token_secret: oauth_access_token_secret 
      }); 

      twit.stream('statuses/sample', function(stream) { 
      stream.on('data', function (data) { 
       console.log(data.text); 
      }); 
      }); 

     } 

    ); 
    }else{ 
     readFile(req.url.substr(1)); 
    } 
}); 
server.listen(8080); 

답변

0

사용 ntwitter 라이브러리 : https://github.com/AvianFlu/ntwitter

그리고 소비하는 API :

var twitter = require('ntwitter'); 

var twit = new twitter({ 
    consumer_key: 'Twitter', 
    consumer_secret: 'API', 
    access_token_key: 'keys', 
    access_token_secret: 'go here' 
}); 

twit.stream('user', {track:'nodejs'}, function(stream) { 
    stream.on('data', function (data) { 
     console.log(data); 
    }); 
    stream.on('end', function (response) { 
     // Handle a disconnection 
    }); 
    stream.on('destroy', function (response) { 
     // Handle a 'silent' disconnection from Twitter, no end/error event fired 
    }); 
    // Disconnect stream after five seconds 
    setTimeout(stream.destroy, 5000); 
}); 
+0

내가 스트림은 새로운 트윗을 얻을 것이라고 생각, 우리가 사용자의 타임 라인에서 20 ~ 30 트윗을 마지막으로해야 할 경우, 그리고 어떻게 우리는 이전 트윗 다음에 더 많은 트윗을 얻을 수 있습니까? – Saifee

관련 문제