У меня возникла странная ошибка после введения некоторых правил .validate в мою базу данных, я начал получать разрешение, которое было отклонено, когда я пытаюсь отправить данные с устройства Android.Данные не соответствуют правилам .validate Firebase
Правило очень простое:
"rules": {
"reportsToAdd": {
".read": "auth != null",
".write": "auth != null",
".validate": "newData.hasChildren(['displayName', 'title', 'description', 'lat', 'lng', 'imageLinks', 'uid', 'isNotified'])"
}
}
Просто проверить, если объект имеет те следующие атрибуты.
Между тем в Android устройства я следующие модели класса
public class Report implements Serializable {
public String displayName;
public String title;
public String description;
public String uid;
public double lat;
public double lng;
public List<String> imageLinks;
public boolean isNotified = false;
public Report() { }
}
Логика для отправки отчета:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("reportsToAdd");
myRef.push().setValue(report, new DatabaseReference.CompletionListener() { ... });
Когда .validate правило удаляется, все работает отлично, так что это не аутентификации вопрос, это просто проверка, я проверил пару раз сейчас для орфографических ошибок, все атрибуты при отправке не равны нулю. Я не думаю, что это должно быть проблемой, вызванной интерфейсом Serializable, поскольку это просто интерфейс.
Полная ошибка: com.google.firebase.database.DatabaseException: Firebase Database error: Permission denied
Так вот что я пропустил, совершенно новый для Firebase. Приветствия! –