Ошибка 403 при загрузкеUrl (Kotlin) в хранилище Firebase

Получение этой ошибки:

E/StorageUtil: ошибка при получении токена java.util.concurrent.ExecutionException: com.google.firebase.internal.api.FirebaseNoSignedInUserException: Прежде чем пытаться получить токен, войдите в систему.

Это тоже:

E/StorageException: произошло исключение StorageException. У пользователя нет разрешения на доступ к этому объекту. Код: -13021 HttpResult: 403 E/StorageException: { "ошибка": { "код": 403, "сообщение": "Отказано в доступе". }} java.io.IOException: { "ошибка": { "код": 403, "сообщение": "Отказано в доступе". }}

Когда этот код попадает в мое приложение для Android:

val urlTask = uploadTask?.continueWithTask { task ->
 if (!task.isSuccessful) {

    Toast.makeText(context, "Upload to Cloud Failed!", Toast.LENGTH_SHORT).show()

task.exception?.let {

     throw it
}

} imagesRef?.downloadUrl.....ERROR IS GENERATED HERE...

Началось, когда я включил авторизацию по электронной почте/паролю и отключил анонимный вход, однако я снова включил анонимный вход и перед началом загрузки убедился, что авторизация не является нулевой.

        val auth = Firebase.auth
        val user = auth.currentUser

ТАКЖЕ, ОН СОХРАНЯЕТ ЗАГРУЖЕННЫЕ ИЗОБРАЖЕНИЯ НА ХРАНЕНИЕ БЕЗ ПРОБЛЕМ... но не загружает URL-адрес.

Вот правила, действующие для моего хранилища Firebase:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {

      allow write: if request.auth != null;
      
      allow read: if request.auth != null;
    }
  }
}

Я не смог найти ответ, почему он будет загружать, но не загружать URL-адрес.

Ваши правила позволяют добавлять данные в облачное хранилище только пользователям, прошедшим проверку подлинности. Вы уверены, что ваш пользователь аутентифицирован перед загрузкой файла?

Alex Mamo 03.02.2023 07:57

Поскольку вы используете Kotlin, я думаю, что этот ресурс поможет. Вот соответствующий репозиторий.

Alex Mamo 03.02.2023 07:58

@AlexMamo, файлы загружаются в хранилище Firebase без проблем. Ошибка возникает при запуске downloadUrl. Входящие работают, исходящие нет?

stroopwafel 03.02.2023 12:09

@AlexMamo, спасибо за ссылки. Я проработаю их и отвечу.

stroopwafel 03.02.2023 12:11

Так что, скорее всего, ваш пользователь не аутентифицируется, когда вы пытаетесь прочитать файл, верно?

Alex Mamo 03.02.2023 12:14

@AlexMamo Я только что добавил оператор Log.d, и вот что он получил. Ты прав! Он равен нулю - «D/fragsuccess: статус аутентификации равен нулю», хотя я не понимаю, что происходит. Аутентификация не равна нулю, когда я отправляю фактический файл изображения за несколько мс до этого, но когда делается запрос на загрузку, auth.currentuser равен нулю? Почему это может быть и чем это может быть вызвано?

stroopwafel 03.02.2023 16:22

@stroopwafel Можете ли вы опубликовать свой полный код? В пропущенном коде может быть что-то, чего нам не хватает.

Rosário Pereira Fernandes 03.02.2023 21:58

На самом деле предложения @AlexMamo исправили проблему. Я готов закрыть это дело. Алекс, если вы разместите свои комментарии в виде поста, я могу отметить как решение. Спасибо!

stroopwafel 03.02.2023 22:21

@stroopwafel Приятно слышать, что вы исправили проблему. Я только что ответил на вопрос.

Alex Mamo 04.02.2023 09:25
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
9
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Проблема в вашем коде присутствует из-за того, что ваш пользователь не проходит аутентификацию, когда вы пытаетесь прочитать файл из облачного хранилища. Чтобы иметь возможность прочитать файл, вы всегда должны убедиться, что ваше использование аутентифицировано в Firebase. При этом перед выполнением операций в облачном хранилище проверьте объект FirebaseUser на недействительность.

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

Похожие вопросы

Почему у меня может не быть возможности предоставления роли «Администратор облачных функций» в Google Cloud?
Flutter, как сортировать коллекцию Firestore на основе индекса другой коллекции
Не могу установить firebase. Возникает эта ошибка: не найдено podspec для `RNFirebase`
Эмулятор Firebase --inspect-functions выдает неподдерживаемое предупреждение
Uncaught (в обещании) FirebaseError: Firebase Storage: объект «Джон» не существует. (хранилище/объект не найден)
Как получить данные из одной коллекции firestore в другую?
Нужна помощь в выяснении того, как обновить состояние из значений списка, полученного асинхронной функцией в firestore
Почему startAfter в этом запросе firebase не работает?
Как получить данные коллекции Firestore как Observable в Angular?
Флаттер `StateError (Плохое состояние: невозможно получить поле на платформе DocumentSnapshot, которая не существует)` при попытке показать пользовательские данные