У меня есть два файла изображений, загруженных в хранилище firebase:
Capsule house.jpg был загружен через пользовательский интерфейс (нажав кнопку «Загрузить файл») .
upload_64e8fd ... загружался с моего внутреннего сервера (node.js), используя это:
const bucket = fbAdmin.storage().bucket('gs://assertivesolutions2.appspot.com');
const result = await bucket.upload(files.image.path);
капсула house.jps распознается как jpeg, и предоставляется ссылка на нее в правом поле. Если я нажму на нее, я увижу свое изображение в новой вкладке. Вы сами можете убедиться:
https://firebasestorage.googleapis.com/v0/b/assertivesolutions2.appspot.com/o/capsule%20house.jpg?alt=media&token=f5e0ccc4-7916-4245-b813-dbdf1838556f
upload_64e8fd ... не распознается как файл изображения любого типа, и ссылка на него не указана.
Результатом, возвращаемым на бэкэнд, является огромный json объект со следующими полями:
"selfLink": "https://www.googleapis.com/storage/v1/b/assertivesolutions2.appspot.com/o/upload_64e8fd09f787acfe2728ae73158e20ab"
"mediaLink": "https://storage.googleapis.com/download/storage/v1/b/assertivesolutions2.appspot.com/o/upload_64e8fd09f787acfe2728ae73158e20ab?generation=1590547279565389&alt=media"
Первый отправляет меня на страницу, на которой написано:
{
"error": {
"code": 401,
"message": "Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.",
"errors": [
{
"message": "Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.",
"domain": "global",
"reason": "required",
"locationType": "header",
"location": "Authorization"
}
]
}
}
Второй дает мне нечто похожее:
Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.
Правила для моего сегмента хранилища следующие:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if true;
}
}
}
Я разрешаю все операции чтения и записи.
Так почему же он говорит, что у меня нет доступа к моему изображению, когда оно загружено через мой внутренний сервер?
Я также хотел бы знать, почему он не распознает его как jpeg при загрузке через мой внутренний сервер, но это происходит при загрузке через пользовательский интерфейс, но я хотел бы сосредоточиться на проблеме доступа в этом вопросе.
Спасибо.