2013-04-10 3 views
1

Я пытаюсь подключиться к Twitters Streaming API через OAuth, используя http.get, хотя у меня небольшая проблема.Twitter Streaming API - Node.js, возвращающий несанкционированную ошибку (OAuth)

Скрипт постоянно возвращается несанкционированным

код я использую следующие, может кто-нибудь сказать мне, если я что-то отсутствует или глупы мои заголовки неверны.

var https = require('https'); 

var options = { 
    host: 'stream.twitter.com', 
    path: '/1.1/statuses/filter.json?track=bieber', 
    method: 'GET', 
    headers: { 
     authorization: ' 
     OAuth 
     oauth_consumer_key  = "", 
     oauth_nonce    = "", 
     oauth_signature   = "", 
     oauth_signature_method = "HMAC-SHA1", 
     oauth_timestamp   = "", 
     oauth_token    = "", 
     oauth_version   = "1.0" 
     ' 

    } 
}; 

var req = https.request(options, function(res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
    console.log(chunk); 
    }); 
}); 

req.on('error', function(e) { 
    console.log('Oops... ' + e.message); 
}); 

req.write('data\n'); 
req.write('data\n'); 
req.end(); 
+1

У вас есть дополнительные ** с ** в httpss: // Кроме того, ваш хозяин не так, см http://nodejs.org/api/http.html#http_http_request_options_callback для примеров –

+0

У меня есть запрос, работающий сейчас, но теперь я получаю Unauthorized, правильно ли написаны мои заголовки OAuth? –

+0

Где находится все данные заголовка? –

ответ

3

Проблема, с которой я столкнулся, заключалась в том, что запрос OAuth НЕ был подписан, что привело к отказу авторизации.

OAuth - сложный процесс, и лучше всего использовать библиотеку или модуль NPM, который уже был разработан.

Конкретная NPM я использовал в данном случае был node-oauth

+1

Вы посмотрели ['ntwitter'] (https://github.com/AvianFlu/ntwitter)? Занимается всем :) – robertklep

+0

Я хотел бы сохранить проект как ваниль, насколько это возможно :-)! –

+0

Отлично, теперь вы должны принять ваш ответ как можно скорее, чтобы будущие посетители знали, что это действительно то, что сработало для вас :) –

0

попробовать это:

var options = { 
    host: 'stream.twitter.com', 
    path: '/1.1/statuses/filter.json?track=bieber', 
    method: 'GET', 
    auth : "YOUR_ID:YOUR_PASS" 
}; 
var https = require('https'); 
https.get(options,function(res){ 
    res.on("data",function(trunk){ 
     //YOUR CODE 
    }).on("end",function(){ 
     //YOUR CODE 
    }).on("error",function(e){ 
     //YOUR CODE 
    }); 
} 
Смежные вопросы