1

API経由でYouTubeチャンネルを購読しようとしています。私はxmlが苦手なので、あなたの助けが必要です。ドキュメントへの元のリンク: https://developers.google.com/youtube/2.0/developers_guide_protocol_subscriptions または

要するに、ここにYou​​Tubeのドキュメントに書かれているものがあります:

サブスクリプションの追加

サブスクリプションを作成するには、サブスクリプションを作成している認証済みユーザーの YouTube ユーザー名を識別する POST 要求を送信します。要求の本文は、次の要素を含む 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フォームメソッドpostでやってみました。しかし、うまくいきませんでした。次のエラーが発生しました。

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

1 に答える 1

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');
  }
});

私はそれをテストしていませんが、あなたはその考えを理解するはずです. コメントをアプリの実際の値に置き換えてください。

これにより、クロスドメインの問題が発生する可能性があることに注意してください。

于 2012-07-29T17:03:13.140 に答える