2013-07-19 73 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,並停止使用舊版本。新的Twitter API需要你對每個請求進行認證,並且你可以在Twitter開發者網站上閱讀的認證機制有一些變化。至於腳本中的上述錯誤,這是因爲你試圖解析JSON.parse(chunk);其中塊是HTML,你正在得到這些錯誤。 嘗試更新您的代碼的最新版本的Twitter API。 謝謝

+0

非常感謝 – monk

1

您正在嘗試解析來自請求的一小部分響應,這可能不是有效的JSON。完整的響應是有效的JSON。

它不斷流JSON,由endlines分隔。你必須處理這些。您必須等待endlines然後解析收到的數據。 參見實施here

相關問題