Каждый раз, когда вы загружаете изображение с помощью Firebase Console, автоматически генерируется токен доступа . Однако, если вы загружаете изображение с помощью любого Admin SDK или gsutil, вам нужно будет вручную сгенерировать этот токен доступа .
Вот пример того, как создать и установить токен доступа для изображения с использованием Admin Python SDK.
import firebase_admin
from firebase_admin import credentials
from firebase_admin import storage
# Import UUID4 to create token
from uuid import uuid4
cred = credentials.Certificate("path/to/your/service_account.json")
default_app = firebase_admin.initialize_app(cred, {
'storageBucket': '<BUCKET_NAME>.appspot.com'
})
bucket = storage.bucket()
blob = bucket.blob(img_src)
# Create new token
new_token = uuid4()
# Create new dictionary with the metadata
metadata = {"firebaseStorageDownloadTokens": new_token}
# Set metadata to blob
blob.metadata = metadata
# Upload file
blob.upload_from_filename(filename=img_path, content_type='image/png')
Вот краткое объяснение:
- Импортируйте библиотеку UUID4 для создания токена.
from uuid import uuid4
- Создать новый UUID4.
new_token = uuid4()
- Создать новый словарь с парой ключ-значение.
metadata = {"firebaseStorageDownloadTokens": new_token}
- Установите его в качестве метаданных BLOB-объекта.
blob.metadata = metadata
- Загрузить файл.
blob.upload_from_filename(...)
Это решение может быть реализовано для любого Admin SDK.
Поддержка Firebase говорит, что это исправлено, но я думаю, что любой, у кого возникла эта проблема, должен go таким образом вместо ожидания Firebase , чтобы это исправить.