В моем приложении странное поведение, связанное с базой данных Firebase.
Я получил несколько неожиданных access denied
при попытке выполнить некоторые вещи в базе данных ... Это может быть ошибка в моем коде, но это довольно простой код.
Я хочу проиллюстрировать ситуацию с реальным сценарием, пожалуйста, прочитайте требования
1 - у меня только 1 приложение для доступа к базе данных (Android)
2 - у меня всего 1 метод во всем приложении, пытающийся получить доступ к определенному узлу, который вызывает отказ в доступе
3- в моих правилах firebase единственное правило, примененное к этому узлу:
".read":"auth != null",
".write":"auth != null"
4 - Я ДОЛЖЕН проверить четкость FirebaseAuth.getInstance().getCurrentUser() != null
прямо перед вызовом метода
это псевдо-фрагмент того, как мой код (я не буду просто писать настоящий код, потому что он слишком длинный)
public void onResume() {
if(FirebaseAuth.getInstance().getCurrentUser() == null)
doLogin();
else
checkFirebaseStuff();
}
Поскольку Google не предоставляет никакой информации о том, почему доступ был отклонен, единственное возможное объяснение, которое я нашел:
пользователь был аутентифицирован, но задолго до этого, поэтому когда он включался, был ли он по-прежнему действителен, но вскоре после того, как функция действительно запустила свой токен (или некоторую другую проверку подлинности в firebase), больше не действовала, поэтому это вызвало доступ запрещен
эта ошибка встречается не часто, у меня 5k ежедневных пользователей, и это происходит около 20 или 50 раз в день, но все равно не должно происходить ни разу
имеет ли это смысл? Кто-нибудь может мне помочь с дополнительной информацией?