如何通过单请求HTTP+JSON调用YouTube API上传视频?
直接上传YouTube视频的multipart/form-data请求配置(非可续传)
核心请求头配置
- Authorization:必填,格式为
Bearer {你的OAuth2授权令牌},令牌必须包含https://www.googleapis.com/auth/youtube.upload权限,需提前在Google Cloud Console完成OAuth2授权流程获取。 - Content-Type:格式为
multipart/form-data; boundary={自定义边界字符串},用Postman的话无需手动编写,工具会自动生成并匹配请求体。 - X-Upload-Content-Length:可选,填写视频文件的字节大小,帮助服务端提前处理文件。
Boundary的本质用法(Postman自动处理,无需手动编写)
multipart请求的boundary是分隔请求体不同部分(如元数据JSON和视频文件)的标识:
- 每个部分开头用
--{边界字符串}标记 - 每个部分需声明
Content-Disposition和对应类型的Content-Type - 整个请求体结尾用
--{边界字符串}--收尾
Postman实操步骤
- 新建POST请求,URL填写
https://www.googleapis.com/upload/youtube/v3/videos?part=snippet,status,part参数要和你设置的视频属性对应(比如snippet管理标题描述,status管理隐私权限)。 - 切换到「Body」标签,选择「form-data」类型。
- 添加第一个字段:
- Key设为
metadata,类型选「Text」 - 点击该字段的「Headers」按钮,添加
Content-Type: application/json - Value里填写视频属性JSON,示例:
{ "snippet": { "title": "你的视频标题", "description": "你的视频描述", "tags": ["标签1", "标签2"], "categoryId": "22" // 对应娱乐分类,可查询YouTube官方分类ID表 }, "status": { "privacyStatus": "private" // 可选public/unlisted/private } }
- Key设为
- 添加第二个字段:
- Key设为
file,类型选「File」 - 点击「Select Files」选择本地要上传的视频文件
- Key设为
- 配置授权头:
- 切换到「Headers」标签,添加
Authorization,值填Bearer {你的OAuth2令牌},也可直接用Postman的「Bearer Token」认证方式更便捷。
- 切换到「Headers」标签,添加
- 直接发送请求即可,Postman会自动生成boundary并同步到Content-Type头,无需手动干预。
关键注意事项
- 非可续传请求的视频大小上限为512MB,超过此限制必须使用可续传模式,这是YouTube API的硬限制。
- 确保OAuth2令牌权限正确,无权限会返回403错误。
part参数必须覆盖你在metadata里设置的所有模块,比如填了snippet和status,part就必须包含这两个,否则会报错。- 若手动修改Content-Type里的boundary,务必保证和请求体里的分隔符完全一致,否则服务端会解析失败。
内容的提问来源于stack exchange,提问作者RealGigex
相关产品推荐
相关产品推荐

