有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

更新消息{0}上的java 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.categoryId

上面是在测试环境中使用的,请求是通过youtube范围授权的,因为我使用它将视频上传到同一youtube频道

我自己的想法是,也许是:

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

  • 我不知何故遇到了一个bug

对于那些希望重现我得到的东西的人,我在测试中采取了以下步骤:

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

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

  3. 成功返回后,尝试按id列出视频

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

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

  6. 尝试更新并接收该错误

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


共 (1) 个答案

  1. # 1 楼答案

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

    希望这能帮助你