Twitter流api

时间:2014-10-03 06:51:31

标签: node.js twitter

我正在努力学习和理解nodejs。在尝试连接到Twitter流的api并跟踪推文时,我收到以下错误:

 undefined:1

    <html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=ut
    ^
    SyntaxError: Unexpected token <
        at Object.parse (native)
        at IncomingMessage.<anonymous> (/home/ytsejam/public_html/nodejs/11/twitter.js:15:20)
        at IncomingMessage.emit (events.js:95:17)
        at IncomingMessage.<anonymous> (_stream_readable.js:764:14)
        at IncomingMessage.emit (events.js:92:17)
        at emitReadable_ (_stream_readable.js:426:10)
        at emitReadable (_stream_readable.js:422:5)
        at readableAddChunk (_stream_readable.js:165:9)
        at IncomingMessage.Readable.push (_stream_readable.js:127:10)
        at HTTPParser.parserOnBody [as onBody] (http.js:142:22)

这是我尝试连接的代码:

var https = require("https");

var options = {
    host: 'stream.twitter.com',
    path: '/1.1/statuses/filter.json?track=bieber',
    method: 'GET',

    headers: {
        "Authorization": "Basic " + new Buffer("username:password").toString("base64")
    }
};
var request = https.request('https://stream.twitter.com/1.1/statuses/filter.json?track=query', function(response){
    var body = '';
    response.on("data", function(chunk){
        var chunk = chunk.toString();
        try {
            var tweet = JSON.parse(chunk);
        } catch (err) {
             console.log("JSON parse error:" + err);
        } 


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

request.end();

我做了一项研究并试图调试。我最好的猜测是var tweet = JSON.parse(chunk);可能会导致问题。第二个选项,我缺少oauth参数。

你能帮帮我吗?感谢。

编辑:

我在这里使用答案Node.js and Twitter API 1.1

解决了这个问题

1 个答案:

答案 0 :(得分:1)

JSON.parse()正在抛出SyntaxError,因为它尝试解析的数据是HTML而不是JSON。

一般情况下,将JSON.parse()包裹在try / catch块中是一个好主意,这样您就可以优雅地处理这些事情。

(你的oauth可能存在问题并且无法进行身份验证。因此,您将获得一个HTML页面,告诉您身份验证失败。但这只是猜测。)