Я выполняю упражнение на 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);