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

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

我正在尝试将 YouTube 视频插入我的播放列表中的特定位置。根据the docs ,我应该能够通过设置 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 问题跟踪器上提交了问题,但没有得到任何回复。我用的是官方的googleapis node package .

编辑:

如果我尝试插入,则 update ,更新请求抛出 403 playlistItemsNotAccessible。这让我认为这可能是一个(记录不充分的)权限问题。我的范围是 [ 'https://www.googleapis.com/auth/youtube' ]

编辑2:

插入使用position值。如果我输入 position: -12,我会得到: 错误:UnsignedInteger 的值无效:-12

最佳答案

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

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

完整request body 会是这样的

{
  "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"
 }
}

请记住,如果您尝试访问与您经过身份验证的 channel 不同的 channel ,Youtube api 是基于 channel 的,您将看到此错误。您尝试添加到的播放列表的用户必须验证您的应用程序并选择该 channel 上的播放列表。未经许可,您无法更新他人的播放列表。

关于node.js - 无法将 playlistItem 插入播放列表中的特定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51033292/

相关文章:

javascript - 类似 numpy 的 Node 包

node.js - Sequelize 模型不会在 create() 中保留所有属性

node.js - 静态模式方法: Cannot read property 'myFindOrCreate' of undefined

android - 超出未经身份验证使用的每日限制。继续使用需要注册

ios - 按 channel 名称检索 YouTube channel 视频

javascript - Node.js 错误 : Object function has no method

java - YouTubeService 类抛出没有此类方法的异常

youtube - 在哪里可以找到最新的/jsbin/www-widgetapi文件?

javascript - Node.js - youtube api - onstatechange 不触发

node.js - 使用 Passport.js 和 YouTube 身份验证登录始终显示同意对话框