J'ai un problème pour déconnecter l'utilisateur actuel de mon application
la méthode que j'utilise est la suivante:
....
onPressed:_signOut
//jump to function
void _signOut() {
FirebaseAuth.instance.signOut();
FirebaseUser user = FirebaseAuth.instance.currentUser;
//print('$user');
runApp(
new MaterialApp(
home: new LoginPage(),
)
);
}
Alors maintenant, lorsque j'appuie sur le bouton, il doit déconnecter l'utilisateur et le rediriger vers la page d'accueil à laquelle il devra se reconnecter, cependant, la redirection se produit mais les données utilisateur seront toujours enregistrées, donc lorsque j'appuie à nouveau sur le bouton, il le fera automatiquement reconnectez-vous avec le dernier compte. Comment puis-je supprimer les données utilisateur pour que l'application pose des questions sur leurs informations d'identification chaque fois qu'elles essaient de se connecter après une déconnexion?
Je sens que je manque quelque chose dans le lien entre les pages et comment leur comportement change en conséquence, mais qu'est-ce que c'est?
Mise à jour: j'utilise la fonction de connexion Google avec l'authentification 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';
}
Ma page de connexion ressemble à ceci:
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")
],
)
)
)
);
}
}
Mise à jour: la méthode _signOut () a été modifiée pour être asynchrone comme suit:
Future <LoginPage> _signOut() async{
await FirebaseAuth.instance.signOut();
return new LoginPage();
}
Maintenant, lorsque j'appuie sur la déconnexion, cela ne me redirige pas vers LoginPagae ni ne déconnecte l'utilisateur.
Vous devez avoir une instance de FirebaseAuth
final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
Puis
_signOut() async {
await _firebaseAuth.signOut();
}