YouTube Data API:添加订阅

时间:2016-02-08 00:41:18

标签: youtube-data-api

我正在使用YouTube的V3 Data API添加订阅频道。这发生在Wordpress安装上。

我在Wordpress主题功能上添加了Google API(for oauth):

wp_enqueue_script( 'googleapi', 'https://apis.google.com/js/client.js?onload=googleApiClientReady', array(), '1.0.0', true );

我以同样的方式添加了oauth javascript文件,这是第一个:https://developers.google.com/youtube/v3/code_samples/javascript

按照本指南(https://developers.google.com/youtube/v3/docs/subscriptions/insert(应用脚本)),我使用addSubscription方法扩展了OAuth js。

Google客户端API似乎已加载并正常工作,因为它在oauth javascript上正确调用了googleApiClientReady。

所以,这就是插入订阅的方式:

OAUTH JAVASCRIPT

... ... ...

// After the API loads
function handleAPILoaded() {
  addSubscription();
}
function addSubscription() {
  // Replace this channel ID with the channel ID you want to subscribe to
  var channelId = 'this is filled with the channel ID';
  var resource = {
    snippet: {
      resourceId: {
        kind: 'youtube#channel',
        channelId: channelId
      }
    }
  };

  try {
    var response = YouTube.Subscriptions.insert(resource, 'snippet');
    jQuery('#success').show();

  } catch (e) {
    if(e.message.match('subscriptionDuplicate')) {
      jQuery('#success').show();
    } else {
      jQuery('#fail').show();

      alert("Please send us a mail () with the following: ERROR: " + e.message);
    }

  }

所以,第一个错误来自

YouTube.Subscriptions.insert(resource, 'snippet')

它说YouTube没有定义。我把它改为:

gapi.client.youtube.subscriptions.insert(resource, 'snippet');

那个错误就消失了。在检查响应时,由于订阅未完成,这就是我得到的

{"wc":1,"hg":{"Ph":null,"hg":{"path":"/youtube/v3/subscriptions","method":"POST","params":{},"headers":{},"body":"snippet","root":"https://www.googleapis.com"},"wc":"auto"}}

所以,我想知道POST请求发生了什么,以及解决方案是什么。

我可以发布完整的OAuth文件,但它就像在示例中一样,加上最后的addSubscription方法。

2 个答案:

答案 0 :(得分:0)

好的,我搞定了,问题出在POST请求上。这是完整的方法:

// Subscribes the authorized user to the channel specified
function addSubscription(channelSub) {
    var resource = {
        part: 'id,snippet',
        snippet: {
            resourceId: {
                kind: 'youtube#channel',
                channelId: channelSub
            }
        }
    };

    var request = gapi.client.youtube.subscriptions.insert(resource);
    request.execute(function (response) {
        var result = response.result;
        if (result) {
            // alert("Subscription completed");
            }
        } else {
            // alert("Subscripion failed");
            // ...
        }
    });
}

另外,请确保加载Google Apps API(实际上没有它,授权/登录按钮将不起作用)和jQuery。

答案 1 :(得分:0)

任何机会你都可以发布使这项工作的所有内容...所有JS整个auth.js保存为你的私钥,我正在解决这个问题。