首页 > 解决方案 > 如何将生成的身份验证令牌传递给 Twitters api

问题描述

我正在关注 Pluralsight 上的一个练习,它基本上相当于发送一个 get 请求,其中包含一个 Twitter 用户最近 10 条推文的查询并显示数据。

在 Twitter 开发门户上,我创建了我的应用程序并生成了我的项目令牌。但是对于我的生活,我无法找到如何使用 GET 请求发送令牌,以便我可以访问 API(否则你不能)

我在这里和谷歌搜索过,只找到了如何生成令牌。一些帮助将不胜感激。

var express = require('express');
var request = require('request');
var url = require('url');


var app = express();

app.get('/', function(req, res) {
    res.sendFile(__dirname + '/views/index.html');
});

app.get('/tweets/:username', function(res, req){
    var username = req.params.username;

    options = {
        protocol: 'http:',
        host: 'api.twitter.com',
        pathname: '/1/statuses/user_timeline.json',
        query: { screen_name: username, count: 10}, 
    }

    var twitterURL = url.format(options);
    request(twitterURL).pipe(response);
});


app.listen(8080);

编辑

所以这不起作用的原因是因为两个不同的问题。Twitter API 之一在过去几年中发生了变化,下面的代码示例不再遵循 Twitter api 标准。相反,我建议使用预先编写的模块,例如此处的模块;https://github.com/desmondmorris/node-twitter

第二个问题是,当我注册时,我没有使用真正的回调网站。我在本地开发,老实说,我认为这并不重要。事实证明确实如此。

我结束的代码;

// Imports
var express = require('express');
var request = require('request');
var url = require('url');
var twitter = require('twitter');
var config = require(__dirname + '/conf/config.js');

// Variables
//var twit = twitter(config);
var app = express();
var twit = new twitter({
    consumer_key: '',
    consumer_secret: '',
    access_token_key: '',
    access_token_secret: ''
});


// Routes
app.get('/', function(req, res) {
    res.sendFile(__dirname + '/views/index.html');
});

app.get('/tweets/:username', function(req, response){
    var username = req.params.username;

    var params = {
        screen_name: username,
        count: 10
    }

    twit.get('statuses/user_timeline', params, function(err, tweets, res){
        if(!err){
            console.log(tweets);
        }
        else{
            console.log(err);
        }
    });
});


app.listen(8080);

标签: node.jsexpress

解决方案


尝试

var express = require('express');
var request = require('request');
var url = require('url');


var app = express();

app.get('/tweets/:username', function(req, res){
    var username = req.params.username;

    options = {
        protocol: 'http:',
        host: 'api.twitter.com',
        pathname: '/1/statuses/user_timeline.json',
        query: { screen_name: username, count: 10}, 
    }

    var twitterURL = url.format(options);
    request(twitterURL).pipe(response=>res.send(response));//send response
});
app.get('/', function(req, res) {
    res.sendFile(__dirname + '/views/index.html');
});



app.listen(8080);

推荐阅读