Twitter Streaming API - Node.js返回未经授权的错误(OAuth)

时间:2013-04-10 18:59:52

标签: node.js http twitter oauth twitter-oauth

我正在尝试使用http.get连接到OAuth上的Twitters Streaming API,尽管我遇到了一些问题。

该脚本不断返回未经授权的

我正在使用的代码如下,任何人都可以告诉我,如果我错过了一些愚蠢或我的标题不正确。

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

2 个答案:

答案 0 :(得分:3)

我遇到的问题是OAuth请求没有被签名,授权失败了。

OAuth是一个复杂的过程,最好使用已经开发的库或NPM模块。

我在这个例子中使用的特定NPM是node-oauth

答案 1 :(得分: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
   });
}