iOS 上的 Firebase 自动登录失败

Posted

技术标签:

【中文标题】iOS 上的 Firebase 自动登录失败【英文标题】:Firebase automatic login failes on iOS 【发布时间】:2020-12-25 20:19:37 【问题描述】:

我正在使用颤振开发应用程序。当用户在 android 设备上登录应用程序,终止应用程序并再次打开应用程序时,我遇到错误,_firebaseAuth.currentUser 返回当前用户详细信息,但在 ios 上执行相同操作时,它返回 null。任何人都可以提出为什么会这样。插件版本是 firebase_auth 0.18.0+1。共享代码以检查 `

bool isSignedIn() 
    try 
      final currentUser = _firebaseAuth.currentUser;
      return currentUser != null;
     catch (error) 
      return false;
    
  

` 我用过这样的块

`

runApp(BlocProvider(
    create: (_) => AuthBloc(userRepository: _userRepository)..add(AppStarted()),
    child: MyApp(),
  ));

`

`

Stream<AuthState> _mapAppStarted() async* 
    try 
      final isSignedIn = _userRepository.isSignedIn();
      if (isSignedIn) 
        final user = await _userRepository.getUser();
        if (user == null) 
          await _userRepository.signOut();
          yield Unauthenticated();
         else 
          List<FollowedFollowingModel> followedFollowingList =
              await getFollowingList(user);
          yield Authenticated(user, followedFollowingList);
        
       else 
        yield Unauthenticated();
      
     catch (_) 
      yield Unauthenticated();
    
  

`

【问题讨论】:

【参考方案1】:

Material widget 内的 main.dart 文件中,您可以像下面这样使用它:

home: FutureBuilder<FirebaseApp>(
          future: Firebase.initializeApp(),
          builder: (BuildContext context, AsyncSnapshot<FirebaseApp> snapshot) 
            if (snapshot.connectionState == ConnectionState.done) 
              return FirebaseAuth.instance.currentUser == null
                  ? GettingStarted() 
                  : Dashboard();
            

            /// other way there is no user logged.
            return Scaffold();
          ),

【讨论】:

然后尝试异步函数 问题是在最新的auth插件中,现在可以不使用async/await获取当前用户了。 我已经更新了问题。添加了我的实现方式

以上是关于iOS 上的 Firebase 自动登录失败的主要内容,如果未能解决你的问题,请参考以下文章

Scrapy 进行简单的自动登录

iOS 上的 Firebase 动态链接有时会失败

Flutter with Firebase Google 登录:断言失败 network_image_io.dart

iOS 上的 Firebase 身份验证失败(Unity、Xcode)

Firebase Android 自动登录

防止用户在注册firebase后自动登录[重复]