节点JS - Youtube API为空

时间:2016-02-21 01:03:30

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

我下载并安装了带有npm install googleapis的google apis,现在我正尝试使用以下代码访问我的节点js文件中的api:

var google = require('googleapis')
var youtube = google.youtube({version: 'v3', auth: API_KEY})

但是,当我尝试访问视频对象时,我总是回来null。显然,youtube对象已损坏,因为当我对其进行字符串化时,我得到了回复:

{"_options":{"auth":"*********"},"activities":{},"captions":{},"channelBanners":{},"channelSections":{},"channels":{},"commentThreads":{},"comments":{},"guideCategories":{},"i18nLanguages":{},"i18nRegions":{},"liveBroadcasts":{},"liveStreams":{},"playlistItems":{},"playlists":{},"search":{},"subscriptions":{},"thumbnails":{},"videoAbuseReportReasons":{},"videoCategories":{},"videos":{},"watermarks":{},"google":{"_options":{},"auth":{"_cachedCredential":null}}}

所以所有小的“子对象”都是空的。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

您是否检查过package.json文件中是否列出了相关性?如果没有尝试npm install --save googleapis,它直接将其添加到您的依赖列表

答案 1 :(得分:0)

当你的youtube变量在字符串化时显示空对象时,没有什么可担心的,因为该对象的JSON表示只包含基本类型的属性。 youtube.videos对象仅包含由JSON.stringify省略的方法。

试试这个:

var google = require('googleapis');
var youtube = google.youtube({version: 'v3', auth: API_KEY});
var queryOptions = {
    'part': 'id,snippet',
    'maxResults': 5,
    'id': 'dQw4w9WgXcQ,HL1UzIK-flA'
};
youtube.videos.list(queryOptions, function(err, data) {
    if(err) {
        console.error(err);
        return;
    }

    console.log(data);
});

答案 2 :(得分:-2)

对于youtube api我使用youtube-node并且工作正常:https://github.com/nodenica/youtube-node