Firebase 注销在颤振应用程序中不起作用

Posted

技术标签:

【中文标题】Firebase 注销在颤振应用程序中不起作用【英文标题】:Firebase sign out is not working in flutter application 【发布时间】:2021-04-05 18:59:18 【问题描述】:

我正在根据提供者 ID 在 Flutter 应用程序中实现 Firebase 注销,但现在根本无法正常工作。

我正在执行下面的代码。

FirebaseAuth _auth = FirebaseAuth.instance;
                if(_auth.currentUser != null) 
                User user =  _auth.currentUser;
               var userset =  user.providerData[0].providerId;

               if(userset == 'google.com')
                 print('google provider');
                 await GoogleSignIn().signOut(); 
           //Firebase sign out navigation to the login page


                 
              else 

                 _auth.signOut();
           //Firebase sign out navigation to the login page
                 print('sign out done successfully');
                                



                

代码已执行,但身份验证状态保持用户登录状态,无论是登录还是注销,并且在重新加载应用程序时它不会进入登录页面而是进入主页。

我应该如何检查退出是否成功?

应用重新加载时应用中的身份验证状态处理

Widget _handleAuth() 
    return StreamBuilder<User>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (BuildContext context, snapshot) 
        return (!snapshot.hasData)
            ? LoginPage()
            : HomePage();
      ,
    );
  

【问题讨论】:

不工作意味着什么?正是你想要的?因为它看起来你的代码是正确的 @ShubhamNarkhede 代码就在某个地方,但问题是当应用程序重新加载时,它会在用户退出而不是登录页面时进入应用程序的主页。请指导我进行某种检查以确保成功退出。以及身份验证状态的变化。 @ShubhamNarkhede 请检查我在问题中进行更改的页面的身份验证状态处理 打印后请检查用户快照给出的输出,然后检查可能对您有帮助 @ShubhamNarkhede,我通过在控制台中打印来检查它,即使在注销后它仍然保持用户状态,这是在实现 google 登录后发生的,早期的电子邮件密码工作正常 【参考方案1】:

即使您使用的是 google 提供商,您也需要退出 firebase:

if(userset == 'google.com')
   print('google provider');
   await GoogleSignIn().signOut();
   _auth.signOut();
 

【讨论】:

以上是关于Firebase 注销在颤振应用程序中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

颤动的 FCM 通知声音在发布中不起作用

注销按钮在 mvc 应用程序中不起作用

权限在颤振发布 apk 中不起作用

将颤振项目发布到 Play 商店后,Firebase Auth 登录不起作用

应用程序关闭时,自定义声音在 Firebase 推送通知中不起作用

单次注销在 keycloak 和 spring security 中不起作用