【发布时间】:2017-12-18 04:00:49
【问题描述】:
我在从我的应用中退出当前用户时遇到问题
我使用的方法如下:
....
onPressed:_signOut
//jump to function
void _signOut() {
FirebaseAuth.instance.signOut();
FirebaseUser user = FirebaseAuth.instance.currentUser;
//print('$user');
runApp(
new MaterialApp(
home: new LoginPage(),
)
);
}
所以现在当我按下按钮时,它应该将用户注销并将他们重定向到他们必须再次登录的主页,但是,重定向发生了,但用户数据仍然会被保存,所以当我按下按钮时再次它会自动使用最后一个帐户再次登录。如何删除用户数据,以便应用在每次注销后尝试登录时询问他们的凭据?
我觉得我在页面之间的链接以及它们的行为如何相应变化方面缺少一些东西,但它是什么?
更新:我使用 google 登录功能和 firebase 身份验证
Future<String> _testSignInWithGoogle() async {
final GoogleSignInAccount googleUser = await _googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth =
await googleUser.authentication;
final FirebaseUser user = await _auth.signInWithGoogle(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
assert(user.email != null);
assert(user.displayName != null);
assert(!user.isAnonymous);
assert(await user.getToken() != null);
return 'signInWithGoogle succeeded: $user';
}
我的登录页面如下所示:
class LoginPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Login"), backgroundColor: Colors.blue,),
body: new Container(
child: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new IconButton(
icon: new Icon(Icons.account_box, color: Colors.red),
onPressed: _signIn,
iconSize: 80.0,),
new Text("Google Signin")
],
)
)
)
);
}
}
更新:将 _signOut() 方法更改为异步,如下所示:
Future <LoginPage> _signOut() async{
await FirebaseAuth.instance.signOut();
return new LoginPage();
}
现在,当我按下注销时,它不会将我重定向到 LoginPagae,也不会将用户注销。
【问题讨论】:
-
您可以添加登录小部件的实现吗?您是否清除了用户名/密码/用户的值?
-
您还可以检查 signOut here 的实现。看起来不错
-
@Mogol 我已经包含了登录页面和登录方法。我不确定这一点,但每当我调用我的登录页面时,我都会尝试将 FirebaseAuth.instance.currentUser.* 设置为空值,但它似乎不起作用,因为这些值没有设置器。
-
google_sign_in 是独立插件,尝试添加 GoogleSignIn.signOut()
-
@Mogol 我相信这在颤振中是无效的,我也相信它应该通过 Firebase 身份验证来完成。
标签: firebase dart firebase-authentication flutter