我想将我的firebase项目与一些第三方API集成,比如twitter API。
第三方API
以下代码将收听包含特定文本“小火箭人”的新推文:
var Twitter = require('twitter');
// setup new twitter client
var client = new Twitter({
consumer_key: '',
consumer_secret: '',
access_token_key: '',
access_token_secret: ''
});
// open new twitter stream
let stream = this.client.stream('statuses/filter', { track: 'little rocket man' });
stream.on('data', (event: any) => {
let tweetText = event && event.text; // this should be written to the firebase db
});
Firebase云功能
以下firebase云功能侦听特定路由上的传入HTTP GET请求,并将数据保存回firebase db:
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin'; // Firebase Admin SDK
admin.initializeApp(functions.config().firebase);
// this example uses a HTTP trigger, but how can I trigger it whenever new tweets containint 'little rocket man' are detected??
exports.addMessage = functions.https.onRequest((req, res) => {
const original = req.query.text;
admin.database().ref('/messages').push({original: original}).then(snapshot => {
res.redirect(303, snapshot.ref);
});
});
问题
如何将我从Twitter客户端收到的推文写回firebase数据库?如果可能的话,我想在firebase云功能上运行所有代码。
声明: 我是firebase的新手,虽然谷歌搜索了几个小时,但我无法在网上找到问题的解决方案。我想提前道歉,我是否应该监督它。
答案 0 :(得分:1)
您无法在云端功能中使用此类流媒体API。函数可能只响应某些不同的事件,例如HTTP请求或数据库中的某些更改。功能无法无限期运行。
如果您想收集与某些查询匹配的推文到您的数据库,您可以使用IFTTT定期将它们发送到函数,因为它们可用。我最近完成了a small project,就是这样。