FirebaseAuth.signOut方法的用途是什么

FirebaseAuth.signOut方法的用途是什么,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我正在尝试实现Firebase身份验证,代码正在运行,在注销时,我发现调用Firebase_auth.signOut()没有任何价值,净效果是相同的 FirebaseAuth _firebase_auth = FirebaseAuth.instance; GoogleSignIn _googleSignIn = GoogleSignIn(); GoogleSignInAccount googleUser = await _googleSignIn.signIn().catchError((

我正在尝试实现Firebase身份验证,代码正在运行,在注销时,我发现调用Firebase_auth.signOut()没有任何价值,净效果是相同的

FirebaseAuth _firebase_auth = FirebaseAuth.instance;
GoogleSignIn _googleSignIn = GoogleSignIn();



GoogleSignInAccount googleUser = await _googleSignIn.signIn().catchError((onError) {
          debugPrint("Error $onError");
        });

final AuthCredential credential = GoogleAuthProvider.getCredential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );

AuthResult authResult;
  try {
    authResult = await _firebase_auth.signInWithCredential(credential);
  } on Exception catch (e) {
   debugPrint('$e');
    return null;
  }

FirebaseUser user = authResult.user;
// do whatever
在注销时

await _firebase_auth.signOut().then((response) {
      isLogged = false;
      setState(() {});
    });

GoogleSignInAccount gSignOut = await _googleSignIn.signOut();

但是如果我不调用\u firebase\u auth.signOut(),那么注销仍然会发生,因此我无法理解为什么需要调用它

如果您不调用
\u firebase\u auth.signOut()
,那么当您再次进入应用程序时,相同的用户仍将登录。您可以使用以下命令检查用户是否已登录:

if (FirebaseAuth.instance.currentUser() != null) {
    // signed in
} else {

}
如果不调用
signOut()
,则
currentUser()
将不会为空,并且用户仍将登录

另外,如果您在
方法之外检查用户,那么
方法将为空,因为它是
异步的。在您的代码中,您实际上使用了两个signin,Google signin和Firebase signin

Firebase
注销
会将您注销所有身份验证提供商,因此如果您使用Google和twitter,那么您将同时注销这两个提供商


您正在使用不同的插件。类
GoogleSignin
来自此插件:


如果我执行googleSignIn.signOut(),那么当前用户将变为null,而不执行\u firebase\u auth.signOut()Google signin来自此插件?(1/2)如果您在
之外检查用户,那么
则它将变为null,因为它是异步的。我也不知道你为什么要使用两个登录。谷歌登录和Firebase一号?。此外,Firebase注销将使您退出所有身份验证提供商,因此如果您使用谷歌和twitter,那么您将同时退出这两个网站(2/2),但您使用的是完全不同的插件登录。请为我介绍一个简单但优雅的Firebase身份验证解决方案,该解决方案可用于谷歌、电话、电子邮件和facebook