在使用Firebase云消息传递(FCM)的Firebase项目中,有一个自动生成的云消息传递服务器密钥。 FCM文档并未表明只有一台服务器可以使用该自动生成的密钥(至少我可以找到它。)但documentation确实明确说明应该安全地存储服务器密钥。
第一个问题:我是否错过了单个服务器记录的限制?
如果没有明确的限制,我确实发现FCM可能会构建检查以确保给定Firebase项目发送消息的请求确实只来自一个IP地址,拒绝来自多个IP地址的请求。 / p>
第二个问题:是隐含的单个服务器限制吗?
如果是这样的情况,可能有多个服务器,每个服务器都在保护服务器密钥的隐私,以及其他任何被记录为“最佳(和安全)实践”的内容,我发现FCM可能会根据此语句限制基于服务器类型的请求:
HTTP标头必须包含以下标头:
授权:key = YOUR_SERVER_KEY
确保这是服务器密钥,其值可在Firebase控制台“设置”窗格的“云消息传递”选项卡中找到。 FCM拒绝Android,iOS和浏览器密钥。
上一个问题: FCM拒绝了“Android,iOS和浏览器密钥”这句话的含义。在服务器类型上下文中是什么意思?如果此声明曾说过来自移动设备(Android或iOS)或浏览器的请求会被FCM拒绝,那就更清楚了。我邀请详细阐述这一点,但不是讨论。
答案 0 :(得分:3)
AFAIK,FCM没有单一服务器限制。还有Receiving Messages from Multiple Senders的主题,在这种情况下,每个发件人(如果是服务器)必须能够访问您的服务器密钥才能发送到您的客户端应用程序。
所以我很确定没有根据检查IP地址(限制发件人发送邮件,如果它与通常不同),除非你设置它你自己(我不确定它是否仍然可以通过API Console设置)。这也是为什么服务器密钥应该保密的原因之一。为了防止未经授权的用户滥用它。
我不确定这里的问题是什么。您能详细说明“我发现FCM可能会根据服务器类型限制请求”。
在FCM之前,曾经有不同类型的 API密钥,它们是服务器, Android , iOS 和浏览器键。无论GCM的类型如何,开发人员都能够使用他们想要的密钥,但是限制只允许使用服务器密钥。有关详细信息,请参阅我的回答here。
在创建新的API密钥之前,这些选项也可用,但是目前,在选择创建API密钥时,它会自动生成,并且您将获得的选项是对下列之一的限制: