使用Python及_get_download_url()获取Firebase Storage上传Blob的URL遇问题
关于Firebase Storage中
_get_download_url()的问题解析 核心问题说明
_get_download_url()是Google Cloud Storage(GCS)客户端库中的私有方法(以下划线开头),并非Firebase Admin SDK对外暴露的正式API。你遇到的Client参数问题,本质是因为这个方法原本设计为GCS内部调用,需要传入原生google.cloud.storage.client.Client实例,但Firebase Admin SDK对GCS做了封装,不会直接提供这个参数,而且该方法目前已经被官方弃用。
你的理解没错——Firebase Admin SDK确实封装了GCS的功能,但封装的是公开API,这种私有内部方法不在封装范围内,直接调用肯定会出问题。
替代方案:生成签名URL(无需公开文件)
既然不想将文件设为公开,官方推荐的做法是生成签名下载URL,这种URL带有效期,只有持有URL的人能在有效期内下载,安全性更高。
代码示例
import firebase_admin from firebase_admin import storage from datetime import timedelta # 初始化Firebase应用(你的原有代码) firebase_admin.initialize_app(cred, storageBucket) bucket = storage.bucket() # 上传文件(你的原有代码) blob = bucket.blob(blobName) blob.upload_from_filename(filename) # 生成签名下载URL,设置有效期(比如1小时) expiration = timedelta(hours=1) signed_url = blob.generate_signed_url(expiration=expiration) print(signed_url) # 这就是可用于下载的临时URL
注意事项
- 生成签名URL需要你的Firebase服务账号具备
storage.objects.get权限(默认服务账号已经具备) - 可以根据需求调整
expiration参数,比如设置为timedelta(days=7)生成7天有效期的URL
内容的提问来源于stack exchange,提问作者Lucas Huguenin
相关产品推荐
相关产品推荐

