【问题标题】:How to show last 20 tweets with twitter api on express.js with node.js?如何使用 node.js 在 express.js 上使用 twitter api 显示最后 20 条推文?
【发布时间】: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);
  }
});

【问题讨论】:

    标签: javascript api express twitter


    【解决方案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 的数据对象)。
    猜你喜欢
    • 1970-01-01
    • 2018-12-25
    • 2012-04-18
    • 2014-03-18
    • 2013-08-19
    • 2013-04-03
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多