Какова цель метода FirebaseAuth.signOut - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь реализовать Аутентификацию Firebase, и код работает, и при выходе из системы я не вижу значения при вызове firebase_auth.signOut (), эффект net такой же.

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

и во время logOff

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

GoogleSignInAccount gSignOut = await _googleSignIn.signOut();

Но если я не позвоню _firebase_auth.signOut (), то по-прежнему происходит выход, поэтому я не могу понять, почему мне нужно его вызвать?

1 Ответ

1 голос
/ 08 января 2020

Если вы не позвоните _firebase_auth.signOut(), то тот же пользователь будет по-прежнему входить в систему при повторном входе в приложение. Вы можете проверить, вошел ли пользователь, используя следующее:

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

}

без вызова signOut(), тогда currentUser() не будет нулевым, и пользователь все равно будет входить в систему.

Также если Вы проверяете пользователя за пределами метода .then, тогда он будет нулевым, поскольку asynchronous. В вашем коде вы на самом деле используете два входа, вход Google и Firebase.

Firebase signOut выведет вас из списка всех авторизированных провайдеров, поэтому, если вы используете Google и Twitter, вы выйдете из обоих.


Вы используете другой плагин. Класс GoogleSignin из этого плагина:

https://github.com/flutter/plugins/blob/master/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...