python-3.x - google.api_core.exceptions.Forbidden:403 GET
问题描述
App Engine 服务从 Firebase 存储下载媒体文件。分配的权限(角色):
- Firebase 管理员
- 存储管理员
存储的内容是不公开的。权限通过设置
path_service_account = 'xxxxxxx.json' os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = path_service_account
分配给服务。存储桶的权限分配给适当的角色。我还将该服务添加为会员。
该文件将临时存储在 tmp/ 中以供进一步处理。在
input_blob.download_to_filename(destination_file_name)
如下:
google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/download/storage/v1/b/uploaded_videos/o/file_example_MP4_480_1_5MG.mp4?alt=media : ('请求失败,状态码', 403 , '预期之一', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
分别
文件“/opt/python3.7/lib/python3.7/site-packages/google/resumable_media/_helpers.py”,第 96 行,在 require_status_code *status_codes google.resumable_media.common.InvalidResponse:('请求失败,状态码', 403, '预期之一', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)
编辑:单击返回消息中的文件链接后的附加信息:
{
"error": {
"code": 400,
"message": "Unknown output format: media:",
"errors": [
{
"message": "Unknown output format: media:",
"domain": "global",
"reason": "invalidAltValue",
"locationType": "parameter",
"location": "alt"
}
]
}
}
有趣的是,在 google 源代码 https://googleapis.dev/python/storage/latest/_modules/google/cloud/storage/blob.html 中,您可以看到添加了 '?alt: media'
_DOWNLOAD_URL_TEMPLATE = u"{hostname}/download/storage/v1{path}?alt=media"
但问题是下载文件名末尾 的冒号: https://storage.googleapis.com/download/storage/v1/b/uploaded_videos/o/file_example_MP4_480_1_5MG.mp4?alt=media:
知道如何绕过这个吗?
解决方案
推荐阅读
- c# - 我的 PDM 插件中的 C# Getthumbnail2 方法问题
- steam - Steam API - 获取 CSGO 存储单元的内容
- holtwinters - 霍尔特冬天阿尔法
- android - 我的 Android 应用程序版本超出预期
- django - 西里尔字母变成了问号 | Django 模板 HTML 元标记
- python - OSError: [WinError 126] 在 pyinstaller 中找不到指定的模块
- json - Swift : Codable Struct Always Nil
- javascript - 有没有更好的方法来遍历 React 渲染部分中的数据?
- php - 使用 PHP 在 MySQL 中插入多行
- javascript - 如何动态导入、修改和导出矢量文件?