如何使用 node.js 在 express.js 上使用 twitter api 显示最后 20 条推文?

Posted

技术标签:

【中文标题】如何使用 node.js 在 express.js 上使用 twitter api 显示最后 20 条推文?【英文标题】:How to show last 20 tweets with twitter api on express.js with node.js? 【发布时间】:2015-12-03 16:54:42 【问题描述】:

我想使用 Twitter API (https://www.npmjs.com/package/twitter),下面是我想补充的想法:

app.js & package.json

var express = require("express"),
path        = require("path"),
http        = require("http"),
twitter     = require("twitter"),
app         = express();

http.createServer(app).listen(3000);

twitter_data.js

var Twitter = require('twitter');
var client = new Twitter(
  consumer_key: '',
  consumer_secret: '',
  access_token_key: '',
  access_token_secret: ''
);

var params = screen_name: 'nodejs';

client.get('statuses/user_timeline', params, function(error, tweets, response)
  if (!error) 
    console.log(tweets);
  
);

【问题讨论】:

【参考方案1】:

我会尽量保持简短,我们开始吧:

先安装express-generator模块:npm install -g express-generator

运行express --hbs(你可以选择 Jade 或其他任何东西,但我更喜欢 Handlebars,所以我会继续这样做)

转到文件夹并安装依赖项:npm install

安装twitter模块:npm install --save twitter

转到 Twitter 的 Application Management Page 并创建您的应用程序。获取必要的密钥:consumer_key、c​​onsumer_secret、access_token_key 和 access_token_secret。

在此之后,我想分享实际的代码,而不是解释要做什么

这里是 /routes/index.js 文件:

var express = require('express');
var Twitter = require('twitter');

var router = express.Router(); 
var client = new Twitter(
  consumer_key: 'XXX',
  consumer_secret: 'XXX',
  access_token_key: 'XXX',
  access_token_secret: 'XXX'
);

router.get('/', function(req, res, next) 
  // https://dev.twitter.com/rest/reference/get/statuses/user_timeline
  client.get('statuses/user_timeline',  screen_name: 'nodejs', count: 20 , function(error, tweets, response) 
    if (!error) 
      res.status(200).render('index',  title: 'Express', tweets: tweets );
    
    else 
      res.status(500).json( error: error );
    
  );
);

module.exports = router;

这里是 /views/index.hbs 文件:

<ul>
  #each tweets 
  <li> this.text </li>
  /each 
</ul>

当你全部保存并运行npm start,你可以在http://localhost:3000看到结果

【讨论】:

如何更改我正在使用 ajax 的 twitter 句柄 get var twitterhandle= $('#twitterUsername').val(); $.ajax( type: 'GET', data: text: twitterhandle , url: '/statuses/user_timeline' , );请分享我想在 /routes/index.js 中添加的内容 查看此部分: screen_name: 'nodejs', count: 20 您也可以从here获取更多信息 啊,好吧,让我们这样做:在get方法中将'/'参数替换为'/:handle'。并将screen_name: 'nodejs' 替换为screen_name: req.params.handle || 'nodejs'。现在你可以像 localhost:3000/gokaygurcan 一样使用它,它会返回给定用户的最后 20 条推文,或者如果你不提供任何参数,它会像以前一样工作。 在看到完整范围之前我什么都说不出来。例如,我只是不知道您是如何获得 text 值的。只是一个小提醒,请将答案标记为已接受的答案以帮助他人。 在您的路由器文件中,将您的 get 方法的第一个参数更改为 /statuses/user_timeline(与您使用 $.ajax 调用的网址相同)。通过此更改,您可以从请求中获取参数,因此只需将我在上面键入的req.param.handle 部分替换为req.query.text(来自$.ajax 的数据对象)。

以上是关于如何使用 node.js 在 express.js 上使用 twitter api 显示最后 20 条推文?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Node.js / Express.js 中将中间件放在它自己的文件中

如何启用调试 express.js/node.js 应用程序

如何使用 node.js 在 express.js 上使用 twitter api 显示最后 20 条推文?

如何在超级终端中停止运行 Node.js (Express) 服务器

使用 Express.js 在 Node.js 中设置路由的最佳方式

如何解析 node.js、express.js、mysql2 中“rows”对象的数据