通过 Google Cloud 功能使用 Firebase 云消息传递

问题描述 投票:0回答:1

如何从 Google Cloud Function (CF)(而非 Firebase Cloud Function)使用 FCM?主要问题似乎是身份验证/权限。谷歌的文档再次迷惑了我。

我们的 GAE 应用程序之一正在使用 FCM。然而,Firebase FCM 从 CF 的初始化似乎有所不同。我们的 GAE 应用程序像这样初始化 Firebase(初始化时)。

FileInputStream serviceAccount = new FileInputStream( "WEB-INF/mywebappfirebasekey.json" );

FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials( GoogleCredentials.fromStream( serviceAccount ) )
.setDatabaseUrl( "https://my-firebase-project.firebaseio.com" )
.build();

我不确定如何像使用 GAE 应用程序一样读取 CF 中的 Firebase JSON 文件,或者即使这种初始化方式可以在 CF 中工作。

相反,我在 Firebase 项目中调整了 IAM(通过云控制台),以使用服务帐户提供对 CF 的访问。委托人是CF项目的服务账户。

我也做了相反的事情。使用云控制台,我已将 Firebase 角色添加到我们的 CF 服务帐户。

所有这些都没有什么区别。尝试通过 Firebase 发送消息时,CF 日志显示此错误。

错误:资源“//cloudresourcemanager.googleapis.com/projects/firebase-project-id”的权限“cloudmessaging.messages.create”被拒绝(或者它可能不存在)。

google-cloud-functions firebase-cloud-messaging
1个回答
0
投票

Firebase Cloud Messaging Admin 没有

cloudmessaging.messages.create
的权限。要添加此权限,请使用以下角色之一:

  1. Firebase 管理员(角色/firebase.admin)

  2. Firebase 增长管理员 (roles/firebase.growthAdmin)

  3. Firebase Admin SDK 管理员服务代理 (roles/firebase.sdkAdminServiceAgent)

  4. Firebase SDK 配置服务代理 (roles/firebase.sdkProvisioningServiceAgent)

您可以参考这个文档:了解角色

© www.soinside.com 2019 - 2024. All rights reserved.