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还有其他解决方案吗?
答案 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)
})
})