Twitter流api
问题描述:
我想学习和理解nodejs。当试图连接到Twitter流和跟踪鸣叫的API,我得到以下错误: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
答
JSON.parse()
被扔SyntaxError
,因为它试图解析数据是HTML而不是JSON。
一般来说,将JSON.parse()
包装在try
/catch
区块中是一个好主意,因此您可以优雅地处理这些类型的事情。
(有可能你的oauth的东西存在问题,并且它没有通过验证,所以不是获取JSON,而是获得一个HTML页面,告诉你验证失败了,但这只是一个猜测。 )
我用你的建议编辑了我的新代码。现在错误是:console.log(tweet.text); TypeError:无法读取未定义的属性'文本'。我想这是api的oauth问题。 – ytsejam 2014-10-03 07:02:59