【问题标题】:Manage server keys in Firebase Cloud Messaging在 Firebase 云消息传递中管理服务器密钥
【发布时间】:2016-09-18 09:09:08
【问题描述】:

我刚刚打开了一个用于 Android 推送消息的 Firebase 云消息传递项目。

齿轮图标显示一个服务器密钥(出于显而易见的原因在此处进行了混淆):

我想拥有多个密钥,因此我可以将它们分发给服务器和开发人员,并在必要时撤销被泄露的密钥。

如何在 Firebase 中管理(添加和删除)服务器密钥?

【问题讨论】:

    标签: firebase google-cloud-messaging firebase-cloud-messaging


    【解决方案1】:

    更新:

    截至目前,生成新服务器密钥的方式,如docs中所述:

    从 2016 年 9 月开始,只能使用 设置 面板的 Cloud Messaging 标签在 Firebase 控制台中创建新的服务器密钥。现有项目需要新建服务器密钥,可以在Firebase console中导入,不会影响现有配置。

    项目迁移步骤见我的回答here。


    对于生成服务器密钥,没有办法在 Firebase 控制台中生成一个。可以通过Google Developers Console:

    1. 转到您的Google Developers Console
    2. 在左侧窗格中,单击 Credentials
    3. 在凭据选项卡下,单击 创建凭据
    4. 选择 API 密钥

    从我的回答here检索到的步骤

    选择API Key后,它会直接创建一个API key,而不用询问它是什么类型的key(Server、Android、Browser、iOS)。它只允许您设置一些可见的限制,具体取决于您要生成的 API 密钥。

    默认情况下,生成的密钥无限制,这使得密钥容易受到攻击,这就是为什么强烈建议您为您的 API 密钥添加限制。在这种情况下,由于您将其用于 FCM(需要服务器密钥),因此您必须添加 IP 地址限制,并且只允许特定的服务器 IP 地址。


    话虽如此,但我不知道您打算如何将多个服务器密钥集成到一个 Firebase 项目中。为什么不直接利用IP 地址限制 并删除被视为泄露 的服务器 IP 地址?

    【讨论】:

    • 对生产/开发环境使用不同的服务器密钥可能很有用,但显然使用开发者控制台添加新的 API 密钥不能用作 FCM 服务器密钥。
    • @Meriw 是的。您需要在 Firebase 控制台中创建一个单独的项目并使用从那里自动生成的项目。
    • 嗨,我正在尝试从 php 向 android 和 IOS 发送通知,但是服务器的密钥对于这两个应用程序是不同的,我是否应该保持条件将 android 的 serverkey 用于 android 通知和 ios 的密钥ios 消息?
    • @ɹɐqʞɐzoɹǝɟ 如果注册的方式是Android和iOS是分开的,那么是的,你应该保持这个条件。
    【解决方案2】:

    每个项目不可能有多个云消息传递服务器密钥。我建议您为应用程序开发暂存环境创建多个 Firebase 项目。

    如果需要,您可以在 Google Developer Console 中重新生成服务器密钥。

    1. 在屏幕的左上角,确认正确 项目被选中。

    2. 在左侧面板上,点击凭据。

    3. 在凭据标签下,点击服务器密钥(由 Google 自动创建 服务)。

    4. 点击重新生成密钥按钮

    5. 会出现一个确认框,询问您是否要替换当前密钥,然后点击替换密钥按钮。

      请注意,新密钥将立即可用。当前密钥将在 24 小时后永久停用。

    完成所有这些步骤后,您可以检查您的 Firebase 项目的云消息传递服务器密钥是否已更新。

    【讨论】:

      【解决方案3】:

      在 Firebase 中,服务器密钥是自动生成的。如果您在 Google Developer Console 中查看 Firebase 项目,它将被列为此类。然后,您可以从那里创建更多密钥(但据我所知,不会在 Firebase 控制台中列出)。

      基本上,您可以通过 Google Developer Console 更好地管理密钥。

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        您应该避免为同一个项目分发 API 密钥。如果发现任何使用 API 密钥的人滥用它,那么整个项目将受到限制,影响项目的所有密钥。

        如果您确实希望让多个开发者向您的应用发送通知,则让每个开发者创建一个 Firebase 项目,然后让客户端使用每个发送者 ID 进行注册。您仍然可以为每个开发人员轮换 API 密钥,或者让客户端删除您不再希望从中接收消息的开发人员的令牌。这样一来,一位开发人员的任何滥用行为都不会对整个项目产生负面影响。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-06-11
          • 1970-01-01
          • 2022-06-21
          • 2016-10-10
          • 1970-01-01
          • 1970-01-01
          • 2018-08-25
          • 1970-01-01
          相关资源
          最近更新 更多