Я столкнулся с проблемой подключения с помощью Twitter API npm. Я не смог решить эту проблему до сих пор. Проблема, с которой я столкнулся во время чтения и практики из книги Семми Пуреваль, в этом примере мы хотим транслировать твиты, содержащие определенные слова. Решая проблему, я пробовал различные методы, которые я либо нашел в Интернете, либо подумал о себе. Сначала я покажу код ошибки с моего терминала, после чего я упомяну, что я пробовал и каковы мои настройки. Пожалуйста, примите к сведению, что я начинающий программист, и тем не менее мне нравилось пытаться решить проблему, которую я мог найти в Интернете. Однако, после того, как я не нашел удовлетворительного решения, я перехожу к Stack Overflow, чтобы задать свой первый вопрос, связанный с технологией;).
Ошибка при запуске twitter.js (файл JS найден в конце вопроса)
Error: Status Code: 401
at Request.<anonymous> (/home/vagrant/app/twitterapi/node_modules/twitter/lib/twitter.js:277:28)
at emitOne (events.js:77:13)
at Request.emit (events.js:169:7)
at Request.onRequestResponse (/home/vagrant/app/twitterapi/node_modules/request/request.js:1066:10)
at emitOne (events.js:77:13)
at ClientRequest.emit (events.js:169:7)
at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:414:21)
at HTTPParser.parserOnHeadersComplete (_http_common.js:88:23)
at TLSSocket.socketOnData (_http_client.js:304:20)
at emitOne (events.js:77:13)
Мой js-код выглядит точно так же, как пример, приведенный в книге на стр. 197. Я узнал, что ошибка состояния 401 генерируется, когда возникают проблемы с авторизацией, ИЛИ в другие неописанные моменты (согласно API Twitter).
Различия в настройках:
- Я установил пакеты узлов локально в папке Twitter, потому что у меня были ошибки при установке Express. (Сначала я запустил npm init, затем npm install express)
- Я запускаю Ubuntu 16.04
- Я запускаю виртуальный ящик 5.2 (вместо 6)
- Сервер работает набродячая коробка
Несколько методов, которые я попробовал:
- Использование различных API Twitter вместо ntwitter (таких как 'twitter' и 'twit') *
- Создание объектной переменной, содержащей коды авторизации и использующей ее для инициализации моего твиттера
- Единственный запуск строки твиттера (без потока), которая не выдает ошибок.
- Используется другойутверждение вместо статусов / фильтра и отслеживания:
К сожалению, я сломал голову, пытаясь решить эту проблему в течение нескольких часов, мне нравилось пытаться выяснить, в чем проблема, но я продолжу безиспользуя этот пример, ни последующие практические упражнения, использующие этот пример. Тем не менее, я бы хотел увидеть, найдет ли кто-нибудь решение. Я хотел бы поэкспериментировать с использованием Twitter API
Спасибо!
Мои файлы js и json соблюдаются.
var twitter = require("twitter"),
credentials = require("./credentials.json"),
client;
var credentialObject = {
"consumer_key": "xx",
"consumer_secret": "xx",
"access_token_key": "xx",
"access_token_secret": "xx"
};
console.log(credentials);
//setting up our twitter object
client = new twitter(credentials);
//setting up our twitter stream with three parameters, seperated by commas
client.stream(
//the first parameter is a string
"statuses/filter",
//second parameter an object containing an array
{"track": ["Awesome", "cool", "rad", "gnarly", "groovy"]},
//the third parameter is our callback for when the stream is created
function(stream){
stream.on("data", function(tweet){
console.log(tweet.text);
});
stream.on('error', function(error) {
throw error;
});
}
);
credentials.json структура файла
{
"consumer_key": "xx",
"consumer_secret": "xx",
"access_token_key": "xx-xx",
"access_token_secret": "xx"
}