首页 > 解决方案 > 是否可以从不在同一个 GCloud 项目中的应用程序中使用 Firebase Cloud Messaging API?

问题描述

我有一个用 NodeJS 编写的 k8s 应用程序(我们称之为 App1),它位于 GCloud 项目(我们称之为 GCP1)上。App1 目前使用:

我想摆脱这种在 GCP3 上进行身份验证的硬编码和潜在危险的方式,所以我做了以下操作:

admin.initializeApp({
    credential: admin.credential.cert(SECRETS_HERE)
});

对此:

admin.initializeApp({
    credential: admin.credential.applicationDefault(),
    projectId: "GCP3_PROJECT_ID"
});

但这不起作用:(。我收到以下错误:

通过“凭据”属性提供给 initializeApp() 的凭据实现未能获取有效的 Google OAuth2 访问令牌,并出现以下错误:“无法解析访问令牌响应:错误:服务器响应状态为 403。

所以我的问题是:

标签: firebasegoogle-cloud-platformfirebase-cloud-messaginggcloud

解决方案


似乎您的应用程序已经正常运行,而您只是在进行更改以增强安全性。

关于你的问题:

  • 您可以使用来自另一个项目的 FCM API 。您可以在一个应用程序中使用多个项目。
  • 您的麻烦似乎是您用来传递令牌的方法。
  • 您需要 GCP1 服务帐户的私钥,因为 GCP3 需要 GCP1 进行身份验证。

您能否分享有关是否GOOGLE_APPLICATION_CREDENTIALS 设置了环境变量的更多详细信息?你也可以试试跑步firebase logoutfirebase login?这将验证环境变量是否已正确配置,并确保登录了正确的帐户。

您还可以阅读有关在单个应用程序中处理多个 Firebase 项目的文档。


推荐阅读