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

Youtube API unexpected part on Update Message {0}

使用 API 有一段时间了,遇到了一个问题:"youtube.part" 上的 400 Bad Request。通常不是问题,我想也许我指定了一个不正确的部分,错误消息会告诉我哪里出了问题,我可以轻松更改它,但是,错误如下:

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. return 尝试按 id

  4. 列出视频成功后
  5. 使用这个id,从youtube获取视频资源

  6. 更改标签部分,保留标题等不变

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

任何帮助将不胜感激,我真的希望这不是一个显而易见的解决方案:)

当您的视频更新请求没有列出您发送的视频对象中包含的所有部分时,就会发生这种情况。例如,如果您的视频对象有片段和状态(因为您使用了 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 的第一个参数,它同时包含状态和摘要。

希望对您有所帮助。