使用 Meteor 和 percolate 的 google-api 包访问 Youtube API

Accessing the Youtube API using Meteor and percolate's google-api package

我刚刚开始我的第一个流星项目,我正在尝试访问 youtube 的开发者 API。

我已经使用 google 创建了开发者凭证,并且我已经包含了 accounts-ui 和 percolate 的 google-api 包。我可以使用 accounts-ui 成功登录,这意味着我的 OAuth 设置似乎正在运行。

然后我尝试 运行 在客户端上做这样的事情:

GoogleApi.get('youtube/v3/search',{
    part : 'snippet',
    q : 'cats',
    maxResults : 25
  },
  function(err,data) {
    !err ? console.log(data) : console.log(err);
  });

我在控制台上收到以下错误:

Error: failed [403] {  "error": {   "errors": [    {     "domain": "global",     "reason": "insufficientPermissions",     "message": "Insufficient Permission"    }   ],   "code": 403,   "message": "Insufficient Permission"  } } 

我不确定我是否错误地调用了该函数,因为我似乎找不到 GoogleApi.get() 函数的任何用法示例(而且我是流星初学者),还是我的开发者账户设置不正确,或者什么。

非常感谢您提供的任何帮助或指示。谢谢!

更新: 使用下面 FullStack 的建议,我的最终代码看起来像这样:

var url = "https://www.googleapis.com/youtube/v3/search";
        var params = {
            key: {Google API Key}
            part: "snippet",
            q: searchTerm,
            maxResults: 25
        };
        Meteor.http.get(url, {params: params}, function (err, result) {
            console.log(result.statusCode, result.data);
            var retdata = result.data;
            Session.set("youtubeSearchItems", retdata.items);
        });

我建议不要使用 google-api 包,而是自己进行 HTTP 调用。下面是示例代码:

  var url = "https://www.googleapis.com/youtube/v3/search";
  var options = {
    'headers' : {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + yourAccessToken,
      'X-JavaScript-User-Agent': "Google APIs Explorer"
    },
    'params' : {
       part : 'snippet',
       q : 'cats',
       maxResults : 25
    }
  };

  var searchResult = HTTP.get(url, options);

确保安装了 HTTP 包:meteor add http 有关详细信息,请参阅 official Meteor docs on HTTP

Percolate 的软件包运行良好。问题是你有 insufficient permissions 正如它所说。要解决此问题,您必须添加您希望使用的 API 所需的范围。

if (Meteor.isClient){
  var scopes = [
    'https://www.googleapis.com/auth/youtube',
  ];
  Accounts.ui.config({
    requestPermissions: {google: scopes}
  });
}

我不知道您指的是哪个 YouTube API,所以我选择了数据版。还有分析和直播。我从这个页面得到了以上范围:

https://developers.google.com/youtube/v3/guides/auth/client-side-web-apps