Meteor和Twitter REST API 1.1

时间:2014-11-14 06:17:38

标签: api twitter meteor

Meteor的大多数Twitter api软件包都已过时,如sewdn:twitter-api& mrt:twit ......

sewdn:twitter-api搜索twitter工作不像'home_timeline,user_timeline'得到此错误..

Exception in setInterval callback: Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.
at Object.Meteor.userId (packages/accounts-base/accounts_server.js:19)
at Object.Meteor.user (packages/accounts-base/accounts_server.js:24)
TwitterApi.getOauthBindingForCurrentUser (packages/sewdn:twitter-api/lib/twitter.js:64)

在meteor中使用Twitter REST API 1.1还有其他解决方案吗?

2 个答案:

答案 0 :(得分:2)

使用NPM包twit以及Arunoda的NPM for Meteor包非常简单,该包可以从Meteor访问它。

meteor add meteorhacks:npm

然后在下次运行meteor时将在根目录中生成的packages.js中添加条目:"twit": "1.1.20"

您现在可以将以下内容添加到任何服务器端文件中:

var Twit = Meteor.npmRequire('twit');

您将能够使用here列出的任何Twitter方法。

<强>更新

您的问题几乎可以肯定是因为您没有使用异步方法使用期货。这是我正在使用的一些代码的传真,其中我附加了一个方法来向twit对象发送推文。显然,如果你试图阅读推文,你需要改变它,但原则应该是相同的:

Twit = Meteor.npmRequire('twit'),
Future = Meteor.npmRequire('fibers/future');

function connectTwitter() {

    var twit = new Twit({
        consumer_key: *****,
        consumer_secret: *****,
        access_token: *****,
        access_token_secret: *****
    });

    twit.sendTweet = function(string) {
        var fut = new Future();
        twit.post('statuses/update', {
            status: string
        }, function(err, res) {
            fut.return({
                err: err,
                res: res
            });
        });
        return fut.wait();
    };

}

答案 1 :(得分:0)

我使用'Meteor.sync'......

Meteor.sync(function(done) {
    var posts = T.get('search/tweets', {
        q: 'banana since:2011-11-11',
        count: 10
    }, function (err, data, response) {
            done(data)

    })
})