如何使用Admin SDK从云函数中使用FCM sendTopic



我需要将一个耗时的过程分解为多个云功能,因为总共需要9分钟的时间(最大执行时间)。为此,我想要一个由酒吧/子主题触发的一个(条目)云函数将消息写入其他主题,这又触发了另一个pub/sub cloud函数。

我正在通过firebase experimental:functions:shell进行测试。触发输入功能不是问题,但是当该功能调用admin.messaging().sendToTopic(...)时,我会收到以下错误:

试图对FCM服务器进行身份验证时会发生错误。制作 确保用于身份验证此SDK的凭据具有适当的 权限。请参阅https://firebase.google.com/docs/admin/setup 设置说明。

我不确定这是否是因为我正在本地测试,但是找不到将消息发送到主题的任何简单方法。Firebase控制台具有"通知"部分,您可以轻松地格式化和发送消息,但是这些似乎仅针对客户端应用程序(ios/android/web)。

我在文档中找不到有关在云功能中配置FCM使用的凭据。我正在使用标准凭据。例如,我的功能毫无问题地写给我的firestore实例。

在Admin SDK中使用FCM的文档似乎也没有提及任何内容。

firebase(Google)云消息传递和Google Cloud Pub/sub是不同的消息系统,如下所示:

两者都是传递消息的系统,但是Google云消息是 Google时,用于传递往返用户设备的消息 Cloud Pub/sub用于在服务器之间通信。Google Cloud 消息传递旨在扩展到大量的交付端 点,但吞吐量较低(每秒消息)。 pub/sub在吞吐量上没有限制,并且具有更通用的API。

尽管他们共享主题的概念,但是发送到FCM主题的消息不会触发Pub/sub Cloud功能。

您可以使用@google-cloud/pubsub从云功能中发布pub/sub消息。文档在这里。

以下两个函数演示了发布并接收简单的字符串消息。

const pubsub = require('@google-cloud/pubsub')();
exports.testWrite = functions.database.ref('/test').onWrite(event => {
   var topic = pubsub.topic('test-topic');
  // Publish a message to the topic.
  var publisher = topic.publisher();
  var message = Buffer.from('Hello World!');
  return publisher.publish(message);
});
exports.helloPubSub = functions.pubsub.topic('test-topic').onPublish(event => {
  const buffer = Buffer.from(event.data.data, 'base64');
  console.log('message=', buffer.toString('utf8'));
  return null;
});

相关内容

  • 没有找到相关文章

最新更新