如何使用meteor {Y}来调用Youtube

时间:2015-12-13 21:39:13

标签: meteor youtube youtube-data-api youtube-javascript-api meteor-blaze

我正在尝试对

进行API调用
https://www.googleapis.com/youtube/v3/subscriptions

我试图这样做,当用户使用Google帐户登录时,他们就能看到他们的YouTube订阅列表。它目前没有工作,我不知道为什么。

我在控制台中遇到两个错误:

1

www.googleapis.com/youtube/v3/subscriptions?part=subscriberSnippet&mine=true&key=MYKEY&part=snippet&mine=true:1 GET https://www.googleapis.com/youtube/v3/subscriptions?part=subscriberSnippet&…ne=true&key=MYKEY&part=snippet&mine=true 401 (OK)

2

Object {statusCode: 401, content: "{↵ "error": {↵  "errors": [↵   {↵    "domain": "gl…e": 401,↵  "message": "Invalid Credentials"↵ }↵}↵", headers: Object, data: Object}content: "{↵ "error": {↵  "errors": [↵   {↵    "domain": "global",↵    "reason": "authError",↵    "message": "Invalid Credentials",↵    "locationType": "header",↵    "location": "Authorization"↵   }↵  ],↵  "code": 401,↵  "message": "Invalid Credentials"↵ }↵}↵"data: Objectheaders: ObjectstatusCode: 401__proto__: Object

我的代码如下:

//client side

Meteor.autosubscribe(function(){
  var newUser = Meteor.user();
  Meteor.subscribe('currentAccessToken');
});

var url = "https://www.googleapis.com/youtube/v3/subscriptions?part=subscriberSnippet&mine=true&key=key";
var options = {
  'headers' : {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + "currentAccessToken",
    'X-JavaScript-User-Agent': "Google APIs Explorer"
    },
    'params' : {
       part : 'snippet',
       mine : 'true',
    }
};

    var searchResult =   HTTP.call("get", url,options,
        function (error, result) {
            if (!error) {
              Session.set("twizzled", true);
            }
            console.log(result);

        });

在服务器端,我发布访问令牌,以便可以使用GET请求发送

//Server Side

  Meteor.publish("currentAccessToken", function(){
  return Meteor.users.find(this.userId, {fields: {'services.google.accessToken': 1}});
});

我非常感谢任何帮助或文档。

1 个答案:

答案 0 :(得分:1)

首先要检查的是授权范围。您必须明确添加YouTube范围(实际上,不止一个,定义单个操作或一小部分操作)。为此,您可以使用Accounts全局对象。只需在客户端(client文件夹内)的任何位置添加此代码:

Accounts.ui.config({
  requestPermissions: {
    google: [
      'https://www.googleapis.com/auth/userinfo.profile',
      'https://www.googleapis.com/auth/userinfo.email',
      'https://www.googleapis.com/auth/youtube',
      'https://www.googleapis.com/auth/youtube.upload'
    ]
  }, 
  requestOfflineToken: {
    google: true
  }
});

下次您使用Google进行授权时,您应该会看到弹出窗口不仅要求提供基本信息,还要求提供YouTube访问权限。有关YouTube Google API范围的详细信息,请参阅official docs

相关问题