我正在尝试使用twit npm包和流星来推送一些推文。我安装了meteorhacks:npm和http作为依赖项,但我仍然没有运气。这是我的代码:
/* server/lib/twitter-api.js */
Meteor.startup(function() {
var Twit = Meteor.npmRequire('twit');
Meteor.methods({
'getStream': function() {
var stream = T.stream('statuses/filter', { track: ['football']})
stream.on('tweet', function (tweet) {
console.log(tweet)
})
}
});
});
/* private/twitter.js */
var T = new Twit(config) {
consumer_key: "xxxxxxxx",
consumer_secret: "xxxxxxx",
app_only_auth: true
}
/* client/views/twitter/twitter.js */
Template.tweets.helpers({
'streams': function() {
return Session.get("streams");
}
});
Template.tweets.events({
'streams': function () {
Meteor.call("getStream", function(error, res) {
console.log(res);
Session.set("tweet", res)
});
}
});
<template name="tweets">
<h1>Tweets</h1>
{{ streams }}
</template>
我遇到的问题很少: 1)我的twit配置密钥是以正确的路径/正确格式存储的吗? 2)我的流星方法存储正确吗?在我收到错误之前说它无法找到,但现在我的控制台什么也没说 3)我需要做些什么来完成这项工作?现在它正试图引入标记为“足球”的推文。有更简单的方法吗?我应该只使用http.get而不是twit npm包吗?
谢谢!
答案 0 :(得分:2)
您可以尝试使用twitter api包来公开twit npm模块我发现以下它似乎是最近的:https://atmospherejs.com/danimal/twit只是为了让生活更轻松。
另外你需要记住twit api将是异步的,因为它是npm模块。您需要将调用转换为twitter api才能同步
这是你的方法的问题,它会在真正得到任何东西之前返回
var stream = T.stream('statuses/filter', { track: ['football']})
我们需要强制它等待使用流http://docs.meteor.com/#/full/meteor_wrapasync的结果 要么 https://github.com/meteorhacks/meteor-async
server/
文件夹中,甚至可以更好地存储在http://docs.meteor.com/#/full/meteor_settings Meteor.startup
用于meteor.methods 如何让它发挥作用? Helper很好,但你最好在客户端调用meteor方法,如服务器端的+ sync函数:
Template.tweets.onCreated(function() {
Meteor.call("getStreams", function(error, res) {
console.log(res);
Session.set("streams", res)
});
});