如何使用 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、consumer_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) 服务器