投稿で提供されているコードにあまり注意を払ってはならないことをすぐに予約します。これはこの投稿専用に書かれたものであり、理解を深めるためにより多くの意味的な負荷がかかります。 PHPの方言のすべてのコード:)
ステップ1は、YouTubeサービスの通常ユーザーとしてあなたを登録することです。 もちろん、既存のログインとパスワードのペアを使用することもできますが、便宜上、ダウンロードしたビデオがブロードキャストされるチャンネルに新しいユーザーを登録する方が良いと思われます。
ステップ2は、 http://code.google.com/apis/youtube/dashboard/ページにアクセスして、開発者キーを取得することから始まります。 指定されたページで、アプリケーションの名前、リクエストを送信するサイトのURL、および説明を指定する必要があります。 必要なデータを入力すると、システムはキーを生成します。これは、AI39si5b05QIsObFU2_BSrPvyO6zC9Eu14BnDzKkhhIqHebS4PqE8o2AKigjP8gCaYTFblB8bpj8CkIWAU5qvdwのような文字のシーケンスです。
YouTubeデータを送信するとき、X-GData-Clientの2つの主要なパラメーターを含む:<client_id>、ここで<client_id>はアプリケーションの名前、X-GData-Key:key = <developer_key>を渡すことに注意してくださいここで、ご想像のとおり、<developer_key>は生成されたキーです。 この段階で、準備が完了し、アプリケーションの構築が開始されました。
ステップ3は、開発者のドキュメント( http://code.google.com/intl/en/apis/youtube/developers_guide_protocol.html )の調査から始まります。ドキュメントの構造を理解することは非常に重要です。最初は複雑に見えるかもしれません。 何をどこで理解したら、問題は消えます。
そのため、どこでもどこでも使用される定数がいくつかあります。これらは次のとおりです。
- API_KEY-開発キー
- API_NAME-アプリケーション名
- YOUTUBE_EMAIL-YouTube登録メール
- YOUTUBE_PASS-YouTubeアカウントを入力するためのパスワード
- YOUTUBE_USERNAME-YouTubeユーザー名
これらの定数をどのように、どこに保存するか-わからない、おそらく何らかの構成ファイルになるか、DEFINEによって宣言された定数はポイントではないが、このデータはいつでもどこでも必要なので、データベース、私は最善の解決策ではないと思います。
正しい操作を開始するには、別の定数の値-認証トークンを取得する必要があります。 Googleでは、Auth SubとClientLoginの2種類の認証を提供しています。 後者の方法は、このメモのフレームワークで考慮されます。これにより、後続のリクエストに関連付けられたユーザーアカウントを特定できるため、後続のリクエストでログインとパスワードを転送する必要があります。
認証トークンを一意に識別して提供できるURL www.google.com/youtube/accounts/ClientLoginにデータを送信する必要があります。 以下に小さなコードを示しますが、curlを使用したい人にとってはこのコードがよりエレガントになることは明らかですが、最初の段階ではコードは参照専用であることを警告しました。
$eq = 'accountType=HOSTED_OR_GOOGLE&Email=YOUTUBE_EMAIL&Passwd=YOUTUBE_PASS&service=youtube&source=API_NAME;
if ($fp = fsockopen ("ssl://www.google.com", 443, $errno, $errstr, 20))
{
$request ="POST /youtube/accounts/ClientLogin HTTP/1.0\r\n";
$request.="Host: www.google.com\r\n";
$request.="Content-Type:application/x-www-form-urlencoded\r\n";
$request.="Content-Length: ".strlen($eq)."\r\n";
$request.="\r\n\r\n";
$request.=$eq;
fwrite($fp,$request,strlen($request));
while (!feof($fp))
$response.=fread($fp,8192);
fclose($fp);
}
preg_match("!(.*?)Auth=(.*?)\n!si",$response,$ok);
AUTH_TOKEN = $ok[2];
そのため、現在確認しているように、Googleから肯定的な応答を受け取りました。ここでは、とりわけ、AUTH_TOKEN定数に格納されている認証トークンが提供されました。 このマーカーは時々更新する必要があります-残念ながら、マーカーが有効であると見なされる期間を見つけられなかったため、新しいマーカーを取得します。
これで、YouTubeと完全に連携する準備が整いました。
ステップ4-ビデオをダウンロードします。 ビデオのアップロードは、正式には2つのコンポーネントで構成されています。データを送信してからダウンロードURLを取得することと、実際のビデオアップロードです。 実際に動画を送信する価値のある一意のダウンロードURLを取得するには、名前、説明、タグ、カテゴリなど、動画を説明するデータをサーバーに送信する必要があります。
ダウンロード、編集、削除、チャンネルのコンテンツの受信などのためにデータを送信する必要があるメインURLはgdata.youtube.comです。 すべてのデータはPOSTメソッドを使用して送信されます。 リクエストを作成します:
$data = "<?xml version='1.0'?>
<entry xmlns='http://www.w3.org/2005/Atom'
xmlns:media='http://search.yahoo.com/mrss/'
xmlns:yt='http://gdata.youtube.com/schemas/2007'>
<media:group>
<media:title type='plain'>_</media:title>
<media:description type='plain'>_</media:description>
<media:category scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>_</media:category>
<media:keywords>_</media:keywords>
</media:group>
";
その後、このリクエストを送信します。
if ($fp = fsockopen ("gdata.youtube.com", 80, $errno, $errstr, 20))
{
$request ="POST /action/GetUploadToken HTTP/1.1\r\n";
$request.="Host: gdata.youtube.com\r\n";
$request.="Content-Type: application/atom+xml; charset=UTF-8\r\n";
$request.="Content-Length: ".strlen($data)."\r\n";
$request .="Authorization: GoogleLogin auth=AUTH_TOKEN\r\n";
$request.="X-GData-Client: API_NAME \r\n";
$request.="X-GData-Key: key=API_KEY \r\n";
$request.="\r\n";
$request.=$data."\r\n";
socket_set_timeout($fp, 10);
fputs($fp,$request,strlen($request));
$response = fread($fp,3280);
fclose($fp);
サーバーから受信したデータは、変数$応答に格納されました。 答えはatom / xmlの形式で表示されます。ここでは、2つのタグに最も関心があります。-ダウンロードURLとダウンロードトークンが含まれています。 次のような必要なデータを取得できます。
preg_match("!(.*?)!si",$response, $url);
preg_match("!(.*?)!si",$response, $token);
その後、動画をアップロードするためのフォームを作成します。 次のようになります。
<form action="$url[1]?nexturl=URL_______" method="post" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="hidden" name="token" value="$token[1] " />
<input type="submit" value="go" />
</form>
ダウンロード後、成功した場合、YouTubeサーバーはユーザーのブラウザをアドレスバーに一意のYouTubeビデオコードを使用してsite_to_transfer_data_after_loadingのURL_にリダイレクトします。
さて、これですべてです。 この記事では、エラー処理のトピックについては意図的に取り上げませんでしたが、これらはすべてドキュメントに記載されているか、経験的に知られています。 次回は、ダウンロードした動画の確認、編集、削除についてお話します。