Flutter移动端Firebase微软认证报错:未创建默认Firebase应用
Flutter Firebase微软认证出现[core/no-app]错误的解决建议
问题描述
运行Flutter移动端应用,通过Firebase实现微软认证时触发以下错误:
[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: [core/no-app] No Firebase App '[DEFAULT]' has been created - call Firebase.initializeApp()
已尝试的操作:
- 通过FlutterFire CLI完成安装配置并关联Firebase项目
- 升级Flutter版本
- 在main函数中添加Firebase初始化逻辑(代码如下)
用户提供的代码:
import 'package:firebase_core/firebase_core.dart'; import 'firebase_options.dart'; // 注:原代码缺失分号,需修正语法错误 void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); } // _LoginWidgetState类中的登录方法 Future<void> performLogin(String provider, List<String> scopes, Map<String, String> parameters) async { try { await FirebaseAuthOAuth().openSignInFlow(provider, scopes, parameters); } on PlatformException catch (error) { debugPrint("${error.code}: ${error.message}"); } Navigator.of(context).pushNamed('/home'); }
解决建议
指定Firebase初始化配置参数
确保初始化时传入平台专属配置,避免默认配置缺失。修改main函数中的初始化代码:await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, );确保Firebase初始化完成后再执行登录逻辑
在登录方法中增加初始化检查,避免因异步初始化未完成触发错误:Future<void> performLogin(String provider, List<String> scopes, Map<String, String> parameters) async { // 检查Firebase是否已初始化 if (Firebase.apps.isEmpty) { await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); } try { await FirebaseAuthOAuth().openSignInFlow(provider, scopes, parameters); } on PlatformException catch (error) { debugPrint("${error.code}: ${error.message}"); } Navigator.of(context).pushNamed('/home'); }验证平台配置文件
- Android:确认
android/app/google-services.json存在且配置正确,包名与Firebase项目注册的一致 - iOS:确认
ios/Runner/GoogleService-Info.plist已添加到项目,Bundle ID与Firebase项目匹配
- Android:确认
清理项目缓存并重新构建
执行以下命令清除旧配置残留:flutter clean flutter pub get # Android额外操作 cd android && ./gradlew clean && cd .. # iOS额外操作 cd ios && pod deintegrate && pod install && cd ..检查依赖包版本兼容性
确认firebase_auth_oauth版本与firebase_core、firebase_auth版本匹配,避免版本冲突导致初始化失败,可在pub.dev查看包的版本兼容说明并更新。
内容的提问来源于stack exchange,提问作者Oluwaseun Fabiyi
相关产品推荐
相关产品推荐

