Я недавно обнаружил, что Firebase Auth сохраняет себя на устройстве даже после удаления моего приложения. Я не могу понять, как УДАЛИТЬ эту старую информацию об аутентификации.
Я не хочу, чтобы пользователь все еще входил в систему после удаления и переустановки приложения. Если по какой-либо другой причине, кроме моего собственного тестирования того, что я ожидаю, будет «чистой установкой» на том же устройстве.
Я понимаю, что не существует простого способа записи события удаления, поэтому я хочу очистить любую потенциальную старую информацию об аутентификации при первом запуске.
Поэтому я добавил код (который, кажется, работает нормально), чтобы проверить, является ли это первым запуском:
Boolean firstRun = prefs.getBoolean("firstrun", true);
if (firstRun) {
// delete everything an old user could have left behind
// ==> This is where I need help <==
prefs.edit().putBoolean("firstrun", false).apply();
} else {
// move along, not the first launch
}
Я пытался (безуспешно):
FirebaseAuth authData = FirebaseAuth.getInstance();
authData.signOut();
Похоже, эти звонки также являются советом в этом связанном вопросе для iOS, но я не смог применить его мудрость:
Firebase - удаление и переустановка приложения не отменяет аутентификацию пользователя
Даже после звонка signOut()
приложение продолжает входить в систему под старым аккаунтом!
Моя кнопка выхода из системы использует FirebaseAuth.getInstance().signOut();
и работает. Есть ли что-то странное (одержимое?) В этом "старом" экземпляре Auth, который сохраняется после удаления, что он просто не умрет ?
В частности, когда я удаляю, а затем устанавливаю / запускаю из Android Studio:
- сначала authData и currentUser не равны нулю
- Я вызываю приведенный выше код, пытаясь избавиться от этого старого пользователя
- 3 миллисекунды спустя (сразу после того, как я позвоню
код) они все еще не равны NULL.
- Еще 2 миллисекунды, currentUser IS NULL (yay?)
- Еще 71 миллисекунда ... все еще ноль (пока все хорошо)
- Чуть меньше секунды спустя ... Я ПОДПИСАНСЯ СТАРЫМ ПОЛЬЗОВАТЕЛЕМ ?! Как это возможно?
В консоли Firebase в разделе Аутентификация эта учетная запись отображается как последняя, подписанная 6 дней назад. Так что это не как-то повторно войти в систему.
Кто-нибудь знает, как удалить данные FirebaseAuth с устройства? Я не хочу "удалять" учетную запись пользователя, просто удалите все ее следы с этого устройства.
Как ни странно, учетная запись, в которую я продолжаю невольно входить, даже не является последней учетной записью, которая вошла в мое приложение на этом устройстве. И это никогда не было проблемой в прошлом (поэтому я даже не знал, что Firebase сохранил Auth после удаления). Таким образом, похоже, что данные аутентификации не всегда сохраняются после удаления ... но когда это происходит, невозможно удалить?
Любая помощь высоко ценится!