更新消息{0}上的Youtube API意外部分

时间:2016-05-12 10:01:56

标签: java google-api google-api-java-client youtube-data-api

现在使用API​​已经有一段时间了,遇到了一个问题:" youtube.part" 。通常不是问题,我想也许我指定了一个不正确的部分,错误信息会告诉我什么是错的,我可以很容易地改变它,但是,错误如下:

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频道。

我自己的想法可能就是:

  • 加载后无法直接更新视频(但可以列出)

  • 我以某种方式遇到了一个错误

对于那些希望重新创建我所获得的内容的人,我在测试中采取了以下步骤:

  1. 使用授权凭据设置youtube实例

  2. 将随机小文件上传到频道(设置视频节目等)

  3. 成功返回尝试按ID列出视频

  4. 使用此ID,从youtube检索视频资源

  5. 更改标签部分,保持标题等不变

  6. 尝试更新并收到该​​错误

  7. 任何帮助都会受到赞赏,我真的希望它不是一个明显的解决方案:)

1 个答案:

答案 0 :(得分:4)

如果您的视频更新请求未列出您要发送的视频对象中包含的所有部分,则会发生这种情况。例如,如果您的视频对象具有代码段和状态(因为您使用了video.setSnippetvideo.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的第一个参数,它包含状态和摘录。

希望这可以帮到你。