FirebaseAuth.signOut方法的用途是什么
我正在尝试实现Firebase身份验证,代码正在运行,在注销时,我发现调用Firebase_auth.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((
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