将Firebase与第三方API集成

时间:2018-01-05 00:57:15

标签: firebase google-cloud-functions

我想将我的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的新手,虽然谷歌搜索了几个小时,但我无法在网上找到问题的解决方案。我想提前道歉,我是否应该监督它。

1 个答案:

答案 0 :(得分:1)

您无法在云端功能中使用此类流媒体API。函数可能只响应某些不同的事件,例如HTTP请求或数据库中的某些更改。功能无法无限期运行。

如果您想收集与某些查询匹配的推文到您的数据库,您可以使用IFTTT定期将它们发送到函数,因为它们可用。我最近完成了a small project,就是这样。