当前位置: 首页 > 知识库问答 >
问题:

是否可以让多个服务器共享一个Firebase云消息服务器密钥?

张积厚
2023-03-14

在使用Firebase云消息传递(FCM)的Firebase项目中,有一个用于云消息传递的自动生成的服务器密钥。FCM文档并没有指出可以且只能有一台服务器使用该自动生成的密钥(至少我可以找到)。但是,文档明确指出应该安全存储服务器密钥。

第一个问题:我是否错过了单个服务器记录的限制?

如果没有明确的限制,我确实会想到FCM可能会内置检查,以确保给定Firebase项目发送消息的请求仅来自单个IP地址,拒绝来自多个IP地址的请求。

第二个问题:单服务器限制是隐含的吗?

如果存在多台服务器,每台服务器都在尽职尽责地保护服务器密钥的隐私以及记录为“最佳(和安全)做法”的任何其他内容,我认为FCM可能会根据以下声明基于服务器类型限制请求:

HTTP标头必须包含以下标头:

授权:密钥=YOUR_SERVER_KEY

确保这是服务器密钥,其值可在Firebase控制台设置窗格的云消息选项卡中找到。FCM拒绝Android、iOS和浏览器密钥。

最后一个问题:在服务器类型上下文中,“Android、iOS 和浏览器密钥被 FCM 拒绝”语句是什么意思?如果这份声明说来自移动设备(Android或iOS)或浏览器的请求将被FCM拒绝,那将更加清楚。我邀请大家详细阐述这一点,但不是讨论。

共有1个答案

赵佐
2023-03-14

>

  • AFAIK,FCM没有单服务器限制。还有一个主题是从多个发送方接收消息,在这种情况下,每个发送方(如果是服务器)必须有权访问您的服务器密钥,才能发送到客户端应用程序。

    因此,我相当肯定,没有对IP地址进行隐藏检查(如果它与通常不同,则限制发送方发送消息),除非您自己设置(我不确定是否仍可以通过API控制台进行设置)。这也是服务器密钥应该保密的原因之一。为了防止未经授权的用户滥用它。

    我不确定这里的问题是什么。您能否详细说明“在我看来,FCM可能会根据服务器类型限制请求”。

    在FCM之前,有不同类型的API密钥,它们是服务器、Android、iOS和浏览器密钥。开发人员可以使用他们想要的密钥,而不管GCM的类型如何,但后来限制只允许使用服务器密钥。更多细节请参见我的回答。

    这些选项以前在创建新API密钥时也可用,但目前,在选择创建API密钥时,它会自动生成,并且您将获得的选项是以下限制之一:

    • 无(默认)
    • HTTP引用者(网站)
    • IP地址(web服务器、cron作业等)
    • Android应用程序
    • iOS应用程序

  •  类似资料:
    • 使用ws,Node.js WebSocket库,可以让多个服务器共享一个HTTP/S服务器。 有可能用socket.io做同样的事情吗?

    • 我已经从Firebase中导入的Google项目中删除了名为Server key(由Google Service自动创建)的api密钥。 现在,项目设置中的字段服务器密钥-云消息传递为空。我也不能发送通知,我从服务器上得到一个未经授权的401错误。 我能做什么?

    • 我目前正在开发一个Android应用程序,我想包括Firebase云消息传递。我计划让树莓派每5分钟左右检查一个网站,并在发生变化时发送推送通知。在官方留档中,他们说我需要一个应用服务器才能通过Firebase发送消息。 这是否意味着我需要让我的Raspi全天候作为服务器运行,并且需要一个静态的IP/域?还是让我的Raspi通过Api(https://fcm.googleapis.com/fcm/

    • 在上面的图片中显示了服务器密钥和旧服务器密钥,其中一个我必须使用。有人知道这两者有什么区别吗? 谢啦

    • 是否有任何API(Python、JS、...)可用于生成和检索Firebase云消息传递服务器令牌? 最终目标应与单击“项目设置”中的“添加服务器密钥”按钮相同。

    • 我们正在使用城市飞艇向我们的Android应用程序发送推送消息。 在此过程中,我们需要使用Firebase控制台中提供的“服务器密钥”配置飞艇- 根据那里的建议,我们正在尝试从GCM迁移到FCM。 问题是“Firebase Cloud Messaging API(V1)”配置中缺少“服务器密钥”。它在“云消息传递API(遗留)”配置中仍然可用,但建议进行迁移。 遵循FCM配置中的链接对这个问题没有