更新消息{0}上的YouTube API意外部分
使用该API有一段时间了,遇到了一个问题:youtube.part上的400错误请求。正常情况下不是问题,我想可能是指定了不正确的部分,错误消息会告诉我错误的地方,我可以很容易地更改它,然而,错误如下:
400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "youtube.part",
"location" : "part",
"locationType" : "parameter",
"message" : "{0}",
"reason" : "unexpectedPart"
} ],
"message" : "{0}"
}
通常在"message": "{0}"
中,它应该会告诉您哪里出了问题。在这里搜索了一下,我似乎找不到解决方案,现在我只指定snippet
。在构建我的更新请求时,我只指定了snippet.title
snippet.tags[]
&;snippet.categoryId
。
youtube
范围内获得授权,因为我使用它将视频上传到同一个YouTube频道。
我自己的想法可能是:
无法在加载视频后直接更新视频(但可以列出)
我不知何故遇到了错误
对于那些希望重现我所得到的东西的人,我在测试中采取了以下步骤:
使用授权凭据设置YouTube实例
将随机小文件上传到频道(设置视频标题等)
尝试按ID列出视频成功返回后
使用此ID从YouTube检索视频资源
更改标记部分,保留标题ETC不变
尝试更新并收到错误
任何帮助都将不胜感激,我真的希望这不是一个显而易见的解决方案:)
解决方案
当您的视频更新请求未列出您要发送的视频对象中包含的所有部分时,会发生这种情况。例如,如果您的视频对象有代码片段和状态(因为您使用了video.setSnippet
和video.setStatus
),则更新方法中的第一个参数必须列出这两个部分:
Video ve = listVids[0];
ve.setStatus(...)
ve.setSnippet(...)
...
YouTube.Videos.Update updateVideosRequest = youtube.videos().update("snippet, status", ve);
Video videoResponse = updateVideosRequest.execute();
请注意youtube.videos().update
的第一个参数,它同时包含状态和代码段。
希望这能帮助您。
相关文章