我正在尝试将 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/