无法将playlistItem插入播放列表中的特定位置

时间:2018-06-26 00:09:40

标签: node.js youtube-api youtube-data-api google-apis-explorer

我正在尝试将youtube视频插入播放列表中的特定位置。根据{{​​3}},我应该可以通过设置position属性。但是,此设置似乎无效。使用以下代码段,不会引发任何错误,并且可以插入视频。唯一的问题是它被插入到播放列表的顶部。 position属性将被忽略。

await google.youtube('v3').playlistItems.insert({
  auth,
  part: 'snippet',
  resource: {
    snippet: {
      playlistId,
      position: 69,
      resourceId: {
        kind: 'youtube#video',
        videoId: 'M7FIvfx5J10',
      },
    },
  },
})

我尝试将position放在对象中的不同位置,没有任何效果。我还在官方google api问题跟踪器上提交了问题,但未得到任何回复。我正在使用官方the docs

编辑:

如果我尝试插入googleapis node package,则更新请求将引发403 playlistItemsNotAccessible。这让我认为这可能是一个(文献不足的)权限问题。我的范围是[ 'https://www.googleapis.com/auth/youtube' ]

编辑2:

插入正在使用position值。如果输入position: -12,则会得到: Error: Invalid value for UnsignedInteger: -12

1 个答案:

答案 0 :(得分:2)

尝试在此处进行测试Apis explorer,它将为您构建请求正文,您可以在代码中使用它

{
 "snippet": {
  "playlistId": "",
  "resourceId": {
   "kind": "youtube#video",
   "videoId": "M7FIvfx5J10"
  },
  "position": 69
 }
}

整个request正文将是这样

{
  "kind": "youtube#playlistItem",
  "etag": etag,
  "id": string,
  "snippet": {
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": {
      "kind": string,
      "videoId": string,
    }
  },
  "contentDetails": {
    "videoId": string,
    "startAt": string,
    "endAt": string,
    "note": string,
    "videoPublishedAt": datetime
  },
  "status": {
    "privacyStatus": string
  }
}

更新错误

{
 "error": {
  "errors": [
   {
    "domain": "youtube.playlistItem",
    "reason": "playlistItemsNotAccessible",
    "message": "Forbidden"
   }
  ],
  "code": 403,
  "message": "Forbidden"
 }
}

请记住,如果您尝试访问的频道与您为验证此错误而进行身份验证的频道不同,则Youtube api是基于频道的。您要添加到其播放列表的用户必须已验证您的应用程序并在该频道上选择播放列表。未经那里的许可,您无法更新其他人的播放列表。