将FCM消息发送到设备而不验证发送者是否可能



这可能是一个奇怪的问题,但是:

我有一个外部服务器,需要向Android和iOS设备发送通知,因为firebase是我需要使用的后台通知的唯一途径。

现在,服务器是高度安全的,不允许来自任何IP的传入连接。我仍然需要发送FCM消息。在文档中,我们必须验证发件人(这显然是不可能的,因为这需要双向连接(。

是否有可能在没有任何身份验证的情况下发送消息?像公共POST?

或者如果没有。有没有一种方法,我可以重复使用相同的私钥进行身份验证,这样我仍然可以在不需要传入连接的情况下启动并忘记?

对于那些感兴趣的人,为什么:我们只发送一个数据通知(触发器(,表明可能发生了什么变化,真正的安全连接通过单独的通道在后台发生,而没有firebase。Firebase只是触发更改以避免轮询后端

编辑:

这个代码可以实际用作fire-and-forget:吗

FileInputStream serviceAccount = new FileInputStream(SERVICE_ACCOUNT_FILE);
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();
FirebaseApp.initializeApp(options);

//...Generate message

FirebaseMessaging.getInstance().send(message);

如果使用传统协议发送消息,则可以通过在请求的Authorization标头中提供静态FCM服务器密钥来进行身份验证。有关详细信息,请参阅有关授权旧式协议发送请求的文档。

虽然建议新应用程序使用有版本的(当前为v1(API,但没有计划停用旧的API。


快速查看有关手动提供凭据的文档,您似乎还可以使用预先生成的服务帐户凭据进行身份验证。这也不需要在运行时进行任何动态身份验证。

最新更新