Как исправить ошибку «У пользователя нет прав доступа к этому объекту» при удалении

Я не могу удалить изображение с помощью «getreferencefromUrl» или путем доступа к дочерним элементам хранилища, потому что я получаю сообщение об ошибке при отказе.

User does not have permission to access this object.

Я пытался исправить хранилище и пробовал разные методы доступа к файлу для удаления, но он просто не работает.

В настоящее время я использую:

StorageReference photoRef = mFirebaseStorage.getReferenceFromUrl(mImageUrl);

    photoRef.delete().addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d(TAG, "onSuccess: deleted file");
        }
        }).addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.d(TAG, "onFailure: did not delete file: " e.getmessage());
        }
    });

Мои правила хранения выглядят так:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null && request.resource.size < 500 * 1024;
    }
  }
}

Изображение не удаляется, даже если я использую URL-адрес загрузки или URL-адрес пути.

2
0
903
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это связано с тем, что при удалении элемента в запросе не будет элемента ресурса, поэтому это условие не будет выполнено.

Вы должны либо точно настроить процесс написания следующим образом

match /{allPaths=**} {
  allow write: if request.auth != null && request.resource.size < 500 * 1024;
  allow delete: if request.auth != null;
  allow read: if request.auth != null && request.resource.size < 500 * 1024;
}

или вы можете сделать это в одной строке, используя

match /{allPaths=**} {
  allow write,read: if request.auth.uid != null && 
                  (request.resource.size < 500 * 1024 || request.method == 'delete');
}

Кроме того, вы должны использовать симулятор правил Firebase для проверки ваших правил.

Другие вопросы по теме