也许这是一个愚蠢的问题,但是当世界领先的云提供商之一无法提供清晰的文档时,愚蠢的问题就会随之而来。
我们严格针对移动消息传递实施 Firebase。创建项目并添加应用程序。伟大的。现在,我正在研究服务器应用程序如何连接到 Firebase API 以启动推送通知。
在创建项目期间,Google 创建了一个 firebase-adminsdk 服务帐户,文档称该帐户应用于通过服务器应用程序对 API 进行身份验证。然而,他们提供的有关我为何使用此帐户或此服务帐户将允许哪些功能的信息完全为零。
我担心的是,Google 创建的服务帐户为整个 Firebase 平台(或者至少是整个项目)提供了荒谬的权限。我猜,我实际上并不知道这一点。我不想那样。我想创建一个仅具有触发推送通知或其他移动消息传递功能的权限的服务帐户,并生成一个可以与应用程序开发人员共享的密钥。我希望该服务帐户与具有其他特定功能的其他权限的其他服务帐户另外存在并共存。
我该怎么做?
创建仅用于 Firebase Messaging 的新的有限服务帐户。
接下来,打开此服务帐户的属性并创建服务器端应用程序使用此服务帐户进行身份验证的密钥。
“Firebase Cloud Messaging API 管理员”角色的权限位于:https://gcp.permissions.cloud/predefinedroles/firebasecloudmessaging.admin
[
"cloudmessaging.messages.create",
"fcmdata.deliverydata.list",
"resourcemanager.projects.get",
"resourcemanager.projects.list"
]
毫无疑问,Google 创建的 firebase-adminsdk 服务帐户拥有的权限远多于生产环境中任何实际 API 使用所需的权限,并且文档没有警告您这一点,这很荒谬。