2013-07-19 2 views
1

Я изучаю node.js, используя серию введения nettutplus. В этой серии есть урок для создания приложения node.js с использованием twitter stream api, код, показанный на видео, точно такой же, как и код, который я написал, однако он не работает.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

^

SyntaxError: Неожиданный маркер <

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) 

Я использую окна и cmd.

ответ

4

Код, который вы используете, предназначен для старого twitter api версии 1. Недавно Twitter запустил новую версию api 1.1 и прервал старую версию. Новый twitter api требует, чтобы вы аутентифицировали каждый запрос, и есть некоторые изменения в механизме аутентификации, которые вы можете прочитать на сайте разработчика Twitter. Что касается выше ошибки в скрипте, это потому, что вы пытаетесь разобрать JSON.parse (chunk); где chunk - html, и вы получаете эту ошибку. Попробуйте обновить свой код для последней версии twitter api. Thanks

+0

большое спасибо – monk

1

Вы пытаетесь разобрать небольшой фрагмент ответа от запроса, который может быть недействительным JSON. Полный ответ - это действительный JSON.

Это потоковое JSON постоянно, ограничено концами. И вы должны справиться с ними. Вы должны дождаться окончания, затем проанализируйте полученные данные. Просмотреть заявку here

Смежные вопросы