RxJS node-oauth simple get请求失败

时间:2015-01-19 08:46:02

标签: node.js oauth rxjs

处理一个简单的(相对)RxJS演示/测试代码,该代码发出Twitter Api调用和MongoDB请求,并将它们压缩为单个可观察对象。

为了能够进行Twitter Api通话,您需要通过Oauth进行身份验证。我找到了node-oauth库到auth节点请求:

var oauth = new OAuth.OAuth(
    'https://api.twitter.com/oauth/request_token',
    'https://api.twitter.com/oauth/access_token',
    'key',
    'secret',
    '1.0A',
    null,
   'HMAC-SHA1'
);

然后我用Oauth get方法创建一个新的Observable来从Twitter获取地点:

var twitterStream = Rx.Observable.fromNodeCallback(oauth.get)('https://api.twitter.com/1.1/trends/place.json?id=23424977',
    'access-token',
    'token');

来自MongoDB的另一个流:

Rx.Node.fromStream(Order.find().stream());

拉链的最后一步:

var getNewList = Rx.Observable
    .zip(flickrStream, orderStream, function(user, order) {
        return {user: user, order: order};
    });

getNewList.subscribe(function(response) {
    // render `response`
    console.log(response);
});

尽管我通过Node执行代码时似乎没问题,但下面的消息会打印到控制台:

TypeError: Object #<Object> has no method '_performSecureRequest'
at exports.OAuth.get (/.../node_modules/oauth/lib/oauth.js:487:15)
at /.../node_modules/rx/dist/rx.all.js:5504:14

我可能已经完成了某事。使用Twitter请求创建新的Observable时出错。另外;我在没有RxJS和MongoDB查询的情况下进行Twitter调用时单独测试了代码,这些代码正常运行。将fromNodeCallback更改为fromCallback也没有任何区别。

1 个答案:

答案 0 :(得分:2)

提供context参数(请参阅documentation)或绑定get的上下文:

Rx.Observable.fromNodeCallback(oauth.get.bind(oauth))

Rx.Observable.fromNodeCallback(oauth.get, oauth)