获取nodejs和twitter api的最新推文

时间:2014-04-15 17:42:42

标签: javascript node.js api twitter

我正在尝试使用twitter api和node / express获取最新的5条推文,但是当我用.get

调用网址时,我没有得到任何结果

当我调用url

时,我希望它返回一个json对象

这是我的电话代码,受到我在其他地方找到的答案以及答案Get the list of latest tweets using node.js and twitterAPI

var ntwitter = require('ntwitter'),
credentials = require('./credentials.json'),
twitter,
tweets = {};

// set up our twitter objects
twitter = ntwitter(credentials);


tweets = twitter.get('/statuses/user_timeline.json', { screen_name: 'twitter', count: 5});

module.exports = tweets;

目前,当我启动服务器时,我收到此错误

    throw new Error('FAIL: INVALID CALLBACK.');
      ^
    Error: FAIL: INVALID CALLBACK.
    at Twitter.get (/home/vagrant/app/node_modules/ntwitter/lib/twitter.js:56:11)
    at Object.<anonymous> (/home/vagrant/app/twitter_stream.js:10:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/home/vagrant/app/server.js:7:19)
    at Module._compile (module.js:456:26)

我的server.js文件,我需要twitter_stream.js文件

var express     = require("express"),
path        = require("path"),
http        = require("http"),
bodyParser  = require("body-parser"),
tweets      = require("./twitter_stream.js"),
app         = express();


// Set the client folder as the default folder
app.use(express.static(__dirname + "/client"));

// Parse incomming json objects with bodyparser
app.use(bodyParser());

// Create the server
http.createServer(app).listen(3000);

// set up routes
app.get("/tweets.json", function (req, res) {
    // res.json returns the entire object as a JSON file
    res.json(tweets);
});

就像一个额外的信息:我正在从一个流浪的64位框运行节点

Haven能够找到很多关于此的信息,所以我可能会完全错误地处理这个问题。

1 个答案:

答案 0 :(得分:1)

node.js是异步的。这意味着功能不会返回值。

//nope, asynchronous calls don't just return values.
tweets = twitter.get('/statuses/user_timeline.json', { screen_name: 'twitter', count: 5});

使用回调:

twitter.get(
  '/statuses/user_timeline.json',
  { screen_name: 'twitter', count: 5}
  function(error, tweets) {
    //Looks, tweets are in here!
    //this function is called a "callback"
  }
);

另外,你不能这样做:

module.exports = tweets;

将功能放在模块中,而不是从Internet加载数据。使用函数将该数据公开给应用程序的其余部分。