pod maskąFirebase Authentication State Change nie ognia, gdy użytkownik jest wyłączone lub usunięte
Używam Firebase uwierzytelniania w moim Android app do podpisania w górę/w użytkowników korzystających z Google, Facebook i e-mail/hasło . Jak dotąd prawie wszystko działa dobrze, z wyjątkiem jednego scenariusza.
Scenariusz
muszę wyłączyć lub usuwać kont użytkowników z konsoli Firebase czasami zakazać niektórych użytkowników mojej aplikacji.
W takim przypadku, po wyłączeniu lub usunięciu tego konkretnego użytkownika, użytkownik musi natychmiast uzyskać wylogowanie z aplikacji i nie powinien mieć możliwości dalszego korzystania z niego.
Bug
Użyłem AuthStateListener
do nasłuchiwania zmian stanu uwierzytelniania i wylogowanie użytkownika, automatycznie, jak tylko ich konto jest wyłączone lub usunięte.
FirebaseAuth.getInstance().addAuthStateListener(firebaseAuth -> {
if (firebaseAuth.getCurrentUser() == null) {
Intent intent = AuthFlowActivity.getCallingIntent(AuthFlowActivity.FORCE_LOGOUT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
activityExitAnimation(BaseAppActivity.this);
}
});
Ale nigdy nie widziałem, aby AuthStateListener wywołał jakiekolwiek zdarzenia związane z tymi działaniami. Nie mogę natychmiast wylogować użytkownika, a użytkownik nadal może korzystać z aplikacji.
Byłbym wdzięczny, jeśli ktoś może pomóc w rozwiązaniu tego problemu.
Wielkie dzięki za pomoc mi w tej sprawie. Nie jestem pewien, jakie podejście powinienem podjąć. W tej samej notatce chciałbym się dowiedzieć, czy detektory AuthStateChange są uruchamiane, jeśli token dostępu wygasł? I w jakim czasie wygasają tokeny? –
Krótkotrwałe tokeny dostępu wygasają w ciągu godziny (stąd moja uwaga, że zajmie to najwyżej godzinę). Jeśli tokena nie można odświeżyć, to z pewnością wywoła zmianę stanu uwierzytelnienia. Jeśli odświeżenie tokena może również wywołać metodę, ale nie sprawdziłem od razu (ta jest bardziej dyskusyjna). –
Dzięki, Frank. Ale zauważyłem, że zalogowałem się z moim kontem Google do aplikacji i nadal się loguję po 2 dniach. To właśnie chciałem wiedzieć. Po zalogowaniu się, kiedy te żetony tracą ważność, a użytkownik musi ponownie się zalogować, aby otrzymać nowe tokeny? –