playlistItems.insert在Node.js googleapi youtube中失败

时间:2014-09-12 20:03:02

标签: node.js google-api youtube-api youtube-javascript-api google-api-nodejs-client

我正在将视频上传到Youtube,然后尝试将其添加到播放列表中。播放列表插入以奇怪的方式失败。 这是我的代码:

var options = {
                    'part'  : 'snippet',
                    'snippet'   : {
                        'playlistId'    : playlistId,
                        'resourceId'    : {
                            'kind'      : 'youtube#video',
                            'videoId'   : videoId
                        }
                    },
                    status  : {
                        privacyStatus   : 'unlisted'
                    }
                };

            console.log('options : ' + JSON.stringify(options));

            youtube.playlistItems.insert(options, function(listErr, listResponse){

                console.log(JSON.stringify(listErr));
                console.log(JSON.stringify(listResponse));

            });

我总是得到完全相同的答案:

{"errors":[{"domain":"youtube.playlistItem","reason":"playlistIdRequired","message":"Playlist id not specified."}],"code":400,"message":"Playlist id not specified."}

任何人都知道我做错了什么?任何帮助都感激不尽。我正在使用googleapi Node.js sdk。

1 个答案:

答案 0 :(得分:4)

我遇到了类似的问题并检查了源代码,并意识到API调用的主体应该在options.resource属性下。因此,您的选项对象应如下所示:

var options = {
    "part"  : "snippet",
    "resource" : {
        "snippet" : {
            "playlistId" : playlistId,
            "resourceId" : {
                "kind" : "youtube#video",
                "videoId" : videoId
                }
            }
        }
    }

另请注意,我已将对象更改为使用双引号,因为options.resource应该是有效的JSON。我还删除了status属性,因为它未在API参考页面上列为参数 - https://developers.google.com/youtube/v3/docs/playlistItems/insert