2013-07-19 8 views
1

nettutplus 소개 시리즈를 사용하여 node.js를 학습 중입니다. 이 시리즈에서는 twitter stream api를 사용하여 node.js 앱을 만드는 데 필요한 교훈을 얻었습니다. 동영상에 표시된 코드는 내가 작성한 코드와 정확히 동일하지만 작동하지 않습니다. 여기 Node.js twitter stream api

내 코드입니다

var https = require("https"); 
var options = { 
host: 'stream.twitter.com', 
path: '/1/statuses/filter.json?track=bieber', 
method: 'GET', 
headers: { 
    "Authorization": "Basic " + new Buffer("username:password").toString("base64") 
} 
}; 

var request = https.request(options, function(response){ 
var body = ''; 
response.on("data", function(chunk){ 
    var tweet = JSON.parse(chunk); 
    console.log("Tweet: "+ tweet.text); 
}); 

response.on("end", function(){ 
    console.log("Disconnected"); 
}); 
}); 

request.end(); 

오류는 얻을 수있다이

정의 : 1 개

^

구문 에러 : 예기치 않은 토큰 <

at Object.parse (native) 
at IncomingMessage.<anonymous> (C:\Users\monk\Desktop\folder\node\twitter.js:14:20) 
at IncomingMessage.EventEmitter.emit (events.js:95:17) 
at IncomingMessage.<anonymous> (_stream_readable.js:736:14) 
at IncomingMessage.EventEmitter.emit (events.js:92:17) 
at emitReadable_ (_stream_readable.js:408:10) 
at emitReadable (_stream_readable.js:404:5) 
at readableAddChunk (_stream_readable.js:165:9) 
at IncomingMessage.Readable.push (_stream_readable.js:127:10) 
at HTTPParser.parserOnBody [as onBody] (http.js:141:22) 

저는 Windows 및 cmd를 사용하고 있습니다.

답변

4

사용중인 코드는 이전 twitter api 버전 1 용입니다. Twitter는 최근 api 1.1의 새 버전을 출시하고 이전 버전을 중단했습니다. 새로운 트위터 API를 사용하려면 모든 요청을 인증해야하며 트위터 개발자 사이트에서 읽을 수있는 인증 메커니즘에는 몇 가지 변경 사항이 있습니다. 위의 스크립트 오류는 JSON.parse (청크)를 구문 분석하려고하기 때문에 발생합니다. 여기서 chunk는 html이고 당신은 그 에러를 얻고있다. 최신 버전의 twitter api 코드를 업데이트 해보십시오. 감사합니다.

+0

대단히 감사합니다. – monk

1

유효한 JSON이 아닌 요청에서 작은 응답 청크를 구문 분석하려고합니다. 완전한 응답은 유효한 JSON입니다.

엔드 라인으로 구분 된 JSON을 지속적으로 스트리밍합니다. 그리고 그것들을 처리해야합니다. endlines를 기다린 다음 수신 된 데이터를 구문 분석해야합니다. 의욕을 참조하십시오. here