得到默认的FirebaseApp已经存在

Ale*_*lex 6 c# firebase asp.net-core firebase-admin

我制作了一个C#API 将通知推送到Flutter应用程序。

我的 API 基本上类似于下面的代码:

public async Task < IActionResult > pushNotification () {
  FirebaseApp.Create(new AppOptions() {
    Credential = GoogleCredential.FromFile("file.json")
  });
  .....
} 
Run Code Online (Sandbox Code Playgroud)

我在浏览器上输入了网址“domain.com/api/controller/pushNotification”,这是第一次工作。我的扑动完美地收到通知。但第二次我得到:

System.ArgumentException: The default FirebaseApp already exists.
   at FirebaseAdmin.FirebaseApp.Create(AppOptions options, String name)
   at FirebaseAdmin.FirebaseApp.Create(AppOptions options)
Run Code Online (Sandbox Code Playgroud)

为什么 ?我该如何解决这个问题?

小智 14

您可以简单地检查是否存在 FirebaseApp 实例

if (FirebaseApp.DefaultInstance == null)
    {
        App = FirebaseApp.Create(new AppOptions()
        {
            Credential = GoogleCredential.FromFile("file.json")
        });
    }
Run Code Online (Sandbox Code Playgroud)


小智 1

Firebase 在内部管理自己的客户端,您可以通过调用 Firebase 的方法来引用它,这些方法向定义的或默认的“应用程序”发出请求,因为从技术上讲您可以拥有多个应用程序。

您很可能只想在 Firebase 应用程序尚不存在时启动该应用程序。我相信你可以通过检查FirebaseApp.apps长度来做到这一点 - 你应该