【问题标题】:RxJS node-oauth simple get request failsRxJS node-oauth 简单获取请求失败
【发布时间】:2015-01-19 08:46:02
【问题描述】:

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

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

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 也没有任何区别。

【问题讨论】:

    标签: node.js oauth rxjs


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-27
      • 1970-01-01
      • 2018-11-24
      • 2017-03-10
      • 2016-08-29
      • 1970-01-01
      • 2013-10-22
      • 2012-10-05
      相关资源
      最近更新 更多