使用R调用YouTube API上传缩略图时提示‘未包含图片内容’错误
修复YouTube API更新缩略图的"The request does not include the image content"错误
问题出在未遵循YouTube API的上传要求:接口需要将图片内容放在名为thumbnail的字段中,通过multipart/form-data格式提交,而你的代码直接将文件作为请求body,导致API无法识别图片内容。
修复步骤
- 将文件包装在以
thumbnail为键的列表中,让httr自动处理multipart/form-data编码 - 使用
query参数传递videoId,避免手动拼接URL导致的编码问题
修改后的完整代码
library(httr) library(tuber) # 替换为你的实际参数 video.id <- "[视频ID]" thumbnail.path <- "[图片路径(推荐绝对路径)]" youtube.client.id <- "[客户端ID]" youtube.client.secret <- "[客户端密钥]" yt_oauth( app_id = youtube.client.id, app_secret = youtube.client.secret, scope = 'partner' ) # 构造正确的POST请求 req <- POST( url = "https://www.googleapis.com/youtube/v3/thumbnails/set", query = list(videoId = video.id), body = list(thumbnail = upload_file(thumbnail.path)), config(token = getOption("google_token")) ) # 查看响应结果 print(content(req))
额外验证点
- 确认图片路径正确:优先使用绝对路径,避免R工作目录变化导致的文件找不到问题
- 检查图片规格:必须是JPG/PNG格式,分辨率不低于1280x720像素
- 权限确认:
partner范围满足接口要求,若仍有问题可尝试添加https://www.googleapis.com/auth/youtube.upload权限
内容的提问来源于stack exchange,提问作者Mickaël B
相关产品推荐
相关产品推荐

