【问题标题】:Accessing the Youtube API using Meteor and percolate's google-api package使用 Meteor 和 percolate 的 google-api 包访问 Youtube API
【发布时间】:2015-09-22 08:17:17
【问题描述】:

我刚刚开始了我的第一个流星项目,我正在尝试访问 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);
        });

【问题讨论】:

  • 用户授权的范围是什么?
  • 在我的开发者帐户中,我已授予对我创建的项目凭据的 youtube API 的访问权限。不确定这是否是您的意思?
  • @Watseka 您能否提供一个模板示例和完整的 js 来调用搜索并将其显示给客户端 - 我是流星菜鸟,遇到了一些问题。当我第二次、第三次(等)单击搜索按钮时,新结果将附加到容器中......你能帮我解决这个问题吗?

标签: meteor google-api youtube-data-api


【解决方案1】:

Percolate 的包装效果很好。问题是你有insufficient permissions,正如它所说的那样。要解决此问题,您必须添加您希望使用的 API 所需的范围。

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

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

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

【讨论】:

    【解决方案2】:

    我建议不要使用 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

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 2011-05-04
      • 1970-01-01
      • 2017-07-17
      • 2016-02-25
      • 1970-01-01
      • 2016-04-16
      • 1970-01-01
      • 2016-11-09
      相关资源
      最近更新 更多