Youtube订阅api [错误]

时间:2012-05-30 15:44:25

标签: api youtube subscriber

我正在尝试通过api订阅youtube频道。因为我对xml不好,所以需要你的帮助。 文档的原始链接:https://developers.google.com/youtube/2.0/developers_guide_protocol_subscriptions

简而言之,这是在youtube文档中写的内容:

添加订阅

要创建订阅,您需要发送POST请求,以识别正在创建订阅的经过身份验证的用户的YouTube用户名。请求的主体是一个包含以下元素的XML条目:

<category>标记用于标识用户正在创建的订阅类型。将标签的term属性值设置为user以指示用户正在订阅其他用户的活动(上传视频,评级,将视频标记为收藏等),或将term属性值设置为channel以指示用户正在订阅一个频道。

<yt:username>标记用于标识正在订阅其活动的频道或用户。

订阅频道

POST /feeds/api/users/default/subscriptions HTTP/1.1
Host: gdata.youtube.com
Content-Type: application/atom+xml
Content-Length: CONTENT_LENGTH
Authorization: Bearer ACCESS_TOKEN
GData-Version: 2
X-GData-Key: key=DEVELOPER_KEY

<?xml version="1.0" encoding="UTF-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
  xmlns:yt="http://gdata.youtube.com/schemas/2007">
    <category scheme="http://gdata.youtube.com/schemas/2007/subscriptiontypes.cat"
      term="channel"/>
    <yt:username>GoogleDevelopers</yt:username>
</entry>

我的问题

我如何编写帖子请求?我尝试用简单的html表单方法发布。但它没有奏效。我收到以下错误。

Content-Type application/x-www-form-urlencoded is not a valid input type.

1 个答案:

答案 0 :(得分:2)

由于您使用的是HTML表单帖子,因此将内容类型设置为application/x-www-form-urlencoded,但所需的内容类型为application/atom+xml

要做你想做的事,你需要使用javascript发布(为了简单起见,我推荐使用jQuery)。

 var data = //XML Data for post

 $.ajax({
  url://Youtube Subscribe Post URL,
  type:"POST",
  data:data,
  Authorization: //ACCESS_TOKEN,
  GData-Version: '2',
  X-GData-Key: 'key=' //DEVELOPER_KEY,
  contentType:"application/atom+xml",
  dataType:"xml",
  success: function(){
    alert('subscribd');
  }
});

我还没有测试过,但你应该明白这个想法。确保将评论替换为应用的实际值。

请注意,这可能会遇到跨域问题。