我想从我的网站上的客户端生成消息,并将消息发送到目标设备.使用像这样的ajax(jquery)请求很简单:
$.ajax({ url: 'https://fcm.googleapis.com/fcm/send', type: 'POST', contentType: "application/json", dataType: 'json', data: JSON.stringify({ "notification": { "title": title, "body": msg, "sound": "default" }, "to": "XXXXXXXXXXXX" }), beforeSend: function(xhr) { xhr.setRequestHeader('Authorization', 'key=YYYYYYYYYY'); } });
但是,那么我不需要保持XXXXXXXXXXXX设备密钥,并且YYYYYYYYYY API密钥是私有的吗?如果没有,我担心人们会开始刮掉这些并从完全不相关的服务中发送垃圾邮件?
这绝对不安全.您传入Authorization
标头的密钥称为服务器密钥,因为您只应在应用服务器(或您直接控制的其他进程)中使用它.
如果您将相同的密钥放在每个客户端设备上运行的代码中,则意味着恶意用户可以(因此将)能够复制您的服务器密钥并使用该密钥代表您向您的应用程序用户发送消息.
Firebase Cloud Messaging文档在其有关FCM服务器角色的部分中对此进行了说明.我们还有一篇博文,介绍如何使用云端消息,实时数据库和后端应用服务器上的Node.js脚本在Android上发送设备到设备消息.