1

我正在尝试使用 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();
4

2 回答 2

3

我在这里遇到的问题是 OAuth 请求没有被签名,这说明授权失败。

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

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

于 2013-04-11T09:19:03.733 回答
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
   });
}
于 2013-05-08T09:07:48.790 回答