在 Firebase 中,使用 FlutterFire,如何在 iOS 上初始化辅助应用程序?带有选项的 InitializeApp 给出 GOOGLE_APP_ID 错误

Posted

技术标签:

【中文标题】在 Firebase 中,使用 FlutterFire,如何在 iOS 上初始化辅助应用程序?带有选项的 InitializeApp 给出 GOOGLE_APP_ID 错误【英文标题】:In Firebase, with FlutterFire, how to initialize a secondary app on iOS? InitializeApp with options give GOOGLE_APP_ID error 【发布时间】:2021-03-29 22:28:12 【问题描述】:

在 Flutter 应用程序中,使用 FlutterFire 连接到 Firebase,使用此代码连接到辅助存储:

  FirebaseApp hostApp;
  try 
    hostApp = Firebase.app("HostApp");
   catch (e) 
    hostApp = await Firebase.initializeApp(
        name: 'HostApp',
        options: FirebaseOptions(
            appId: ConfigService.hostAppId,
            apiKey: ConfigService.hostApiKey,
            authDomain: ConfigService.hostAuthDomain,
            storageBucket: ConfigService.hostStorageBucket,
            projectId: ConfigService.hostProjectId,
            messagingSenderId: ConfigService.hostMessagingSenderId));
  
  _storage = firebase_storage.FirebaseStorage.instanceFor(app: hostApp);

android 上有效,但在 ios 上在 initializeApp 上出现此错误:

    7.3.0 - [Firebase/Core][I-COR000009] The GOOGLE_APP_ID either in the plist file 'GoogleService-Info.plist' or the one set in the customized options is invalid.
If you are using the plist file, use the iOS version of bundle identifier to download the file, and do not manually edit the GOOGLE_APP_ID. You may change your app's bundle identifier to 'app.myapp'.
Or you can download a new configuration file that matches your bundle identifier from https://console.firebase.google.com/ and replace the current one.
    *** Terminating app due to uncaught exception 'com.firebase.core', reason: 'Configuration fails. It may be caused by an invalid GOOGLE_APP_ID in GoogleService-Info.plist or set in the customized options.'
        *** First throw call stack:
        (
            0   CoreFoundation                      0x000000010c627b0b __exceptionPreprocess + 171
            1   libobjc.A.dylib                     0x000000010c08c141 objc_exception_throw + 48
            2   CoreFoundation                      0x000000010c690625 +[NSException raise:format:] + 197
            3   Runner                              0x00000001088fb926 +[FIRApp addAppToAppDictionary:] + 278
            4   Runner                              0x00000001088fab12 +[FIRApp configureWithName:options:] + 1266

我添加了 iosClientId 和 iosBundleId 选项,但报同样的错误。

默认应用已经初始化:

WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();

包标识符是正确的。

如何在 iOS 上初始化辅助应用?

【问题讨论】:

您从哪里获得所有这些值? (appId:ConfigService.hostAppId,apiKey:ConfigService.hostApiKey,authDomain:ConfigService.hostAuthDomain,storageBucket:ConfigService.hostStorageBucket,projectId:ConfigService.hostProjectId,messagingSenderId:ConfigService.hostMessagingSenderId) 初始化辅助应用是什么意思? 这些值来自 Firebase 项目设置(或在 google-services.json 中)。 应用连接到另一个 Firebase 项目。这就是我所说的“辅助应用”。 【参考方案1】:

我使用的是网络 appId(例如 1:12345678:web:123abcd456efg78)。我已将 appId 更改为 iOS appId,它可以正常工作。

在 Android 上可以运行,但在 iOS 上会出现此错误。

【讨论】:

我们也可以使用 FirebaseOptions 来初始化默认应用吗?或者它应该只用于初始化辅助应用程序?是否可以删除 google-services.json 并使用 FirebaseOptions 初始化默认应用程序? 不,不能。在 Firebase.initializeApp 帮助中说:“默认应用实例无法在此处初始化,应使用平台 Firebase 集成创建”

以上是关于在 Firebase 中,使用 FlutterFire,如何在 iOS 上初始化辅助应用程序?带有选项的 InitializeApp 给出 GOOGLE_APP_ID 错误的主要内容,如果未能解决你的问题,请参考以下文章

在一个移动应用中使用来自不同 Firebase 项目的两个 Firebase 服务

使用选项配置 firebase 在 Xcode 11 和 Firebase 6.19 中崩溃

如何在项目中使用 firebase 和 firebase 功能的现有 Flutter 应用程序中更新包名称?

如何使用firebase函数返回保存在firebase存储中的文件的json内容

我可以在 Firebase 中使用 jwt 令牌吗?

如何在不使用 Firebase 身份验证的情况下保护 Firebase 存储? (下一个)