Javascript 如何在带有node.js的express.js上使用twitter api显示最近20条推文?
我想使用Twitter API(),下面是我想添加的想法: app.js和package.jsonJavascript 如何在带有node.js的express.js上使用twitter api显示最近20条推文?,javascript,api,express,twitter,Javascript,Api,Express,Twitter,我想使用Twitter API(),下面是我想添加的想法: app.js和package.json var express = require("express"), path = require("path"), http = require("http"), twitter = require("twitter"), app = express(); http.createServer(app).listen(3000); twitte
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);
}
});
我会尽量简短,现在开始: 首先安装模块:
npm安装-g express generator
运行express--hbs
(您可以选择Jade或其他任何东西,但我更喜欢车把,所以我将继续)
转到文件夹并安装依赖项:npm安装
安装模块:npm安装--保存twitter
转到Twitter并创建你的应用程序。获取必要的密钥:使用者密钥、使用者密钥、访问令牌密钥和访问令牌密钥
在这一点之后,我想分享实际的代码,而不是解释该做什么
下面是/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>
{{{#每条推特}
- {{this.text}}
{{/每个}}
当您保存它们并运行
npm start
时,您可以在如何更改我正在使用的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}
您也可以从Ahh获得更多信息,好的,那么,让我们这样做:在get方法中将'/'
参数替换为'/:handle'
。并将screen_name:'nodejs'
替换为screen_name:req.params.handle | | nodejs'
。现在你可以像以前一样使用它,它将返回给定用户的最后20条tweet,或者如果你不提供任何参数,它将像以前一样工作。在看到完整范围之前,我不能告诉任何事情。例如,我不知道你是如何得到text
值的。只是一个小提示,请将答案标记为已接受答案以帮助他人。在路由器文件中,将get方法的第一个参数更改为/statuses/user\u timeline
(与您使用$.ajax调用的url相同)。通过此更改,您可以从请求中获取参数,因此只需将我上面键入的req.param.handle
部分替换为req.query.text
(来自$.ajax的数据对象)。