firebase - 如何使用 Firebase 身份验证在 Flutter 中注销用户

标签 firebase dart firebase-authentication flutter

我在从我的应用中退出当前用户时遇到问题

我使用的方法如下:

....
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,也不会将用户注销。

最佳答案

Firebase auth 的 signOut 方法是异步的。你应该让你的 _signOut 方法 async

Future<void> _signOut() async {
  await FirebaseAuth.instance.signOut();
}

以便在用户退出后调用 runApp

如果您希望 signIn 向用户显示身份验证对话框,而不是静默地自动重复使用当前的 Google 用户。

关于firebase - 如何使用 Firebase 身份验证在 Flutter 中注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079459/

相关文章:

ios - 无法将字符串从 Firebase 数据库闭包 block 快速传递给公共(public)变量

ios - Firebase 动态链接中的 customURLScheme 是什么?

firebase - 构建 Builder(dirty) : 引发了以下 RangeError

angular - 在 Angular 13 中进行 Firebase 集成期间找不到名称 'PhoneOrOauthTokenResponse'

android - 为什么 RemoteMessage.getData() 在 firebase 通知中返回 null?

android - 将 firebase 电话身份验证替换为短信检索器 api 以进行 otp 验证

flutter - 在 flutter_local_notifications 中添加 mp3 声音

Flutter 将 RenderObject 转换为 RenderBox

java - Firebase 身份验证错误 Android Studio

firebase - 如何在世博会中使用 firebase 登录