簡體   English   中英

Twitter流API

[英]Twitter stream api

我正在嘗試學習和理解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和Twitter API 1.1

JSON.parse() SyntaxError因為它嘗試解析的數據是HTML而不是JSON。

通常,將JSON.parse()包裝在try / catch塊中是一個好主意,這樣您就可以優雅地處理這些事情。

(您的oauth資料中可能有一個問題,它無法通過身份驗證。因此,不是獲取JSON,而是獲取一個HTML頁面,告訴您身份驗證已失敗。但這只是一個猜測。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM