Как передать сгенерированные токены аутентификации в API Twitters - PullRequest
0 голосов
/ 08 января 2019

Я выполняю упражнение на Pluralsight, и оно в основном сводится к отправке запроса на получение с запросом последних 10 твитов пользователя Twitter и отображению данных.

На портале Twitter Dev я создал свое приложение и сгенерировал токены своих проектов. Однако я не могу выяснить, как отправить токен с запросом GET, чтобы я мог получить доступ к API (в противном случае вы не можете)

Я искал здесь и в Google и только нашел, как генерировать токены. Некоторая помощь будет высоко ценится.

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);

Редактировать

Так что причина, по которой это не сработало, заключается в двух отдельных проблемах. Один API-интерфейс Twitter изменился за последние несколько лет, и примеры кода, такие как приведенный ниже, больше не соответствуют стандарту API API Twitter. Вместо этого я бы рекомендовал использовать предварительно написанный модуль, такой как здесь; 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);

1 Ответ

0 голосов
/ 08 января 2019

Попробуйте

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...