Youtube Data API
特定のYoutube動画をWebサイト上で再生するだけであれば、YouTube Player APIを使って実現できます。
しかし、指定のチャンネルや再生リストなどが更新された時に、リアルタイムにWebサイトにその情報を反映させたり、ある条件に合った動画を検索したりする場合は、Youtube Data APIを使うと良いでしょう。
YouTube Player APIは、基本的には貼り付けるだけで再生できて、少しのJavaScriptなどで制御できるものでしたが、Youtube Data APIは、できる事が多いだけに、少しだけ使用難易度の敷居が高いです。
Googleの管理画面でAPIキーを発行し、アクセス制限の処理などを設定したりします。そしてAPIのアクセス頻度にも制限があります。
そういった手続きや、APIへのアクセス頻度なども考えて工夫した仕組みが必要です。
Youtube Data API公式サイト
Youtube Data APIの手続き
Google Developers Console
Googleから提供されているAPIを使うためにはGoogleアカウントが必要です。
Googleアカウントにログインして、Google Developers Console で様々な手続きを行うことができます。
Youtube Data APIの設定もGoogle Developers Consoleから行ってください。
プロジェクトを作成
Google Developers Consoleのダッシュボードから、APIを使うプロジェクトを選択してください。初めて使う時は、そのプロジェクトとやらが1つもないはずですので、プロジェクト名やプロジェクトIDを決めて、新規にプロジェクトを作成します。
プロジェクトというのはAPIを使うための企画名みたいなもので、わかりやすい企画名をつけておきましょう。
作成できるプロジェクトは12個までです。
APIとサービスを有効化
新規作成、もしくは選択したプロジェクトの中で、APIとサービスを有効にします。APIとサービスを有効化という文字ボタンなどがありますので、これを押して、APIライブラリ一覧を表示します。
Googleが提供する様々なAPIが一覧表示されます。その中からYouTube Data API v3を選択してください。
その後の画面で有効化を押せば、APIが使用可能になります。
APIキーの作成
ダッシュボード画面の下のほうに認証情報があります。この画面の中で新規に認証情報を作成してください。ここで発行したAPIキーは同じプロジェクト内で使いまわすことができます。もしGoogle Mapなどで既に発行したAPIがあれば、そのAPIキーでYoutube Data APIを使うこともできます。
APIキーは、認証情報画面の選択したAPIキー画面の中にあるAPI Keyというところに表示されている、40文字程度の文字列です。このAPIキーをコピーして記録しておいてください。
APIの制限
APIキー画面の中の、アプリケーションの制限の部分で、APIへのアクセス制限を設定できます。HTTPリファラーを設定すれば、APIにアクセスできるWebサイトのURLなどで制限をつける事ができます。しかしリファラーは偽装できるので、あまりお勧めしません。
WebサーバーのIPアドレスによる制限をお勧めします。
そして、もう1つ忘れてはならないのが、このプロジェクトで使用許可するAPIの選定です。使用するAPIの中からYoutube Data API v3を選択してください。
Youtube Data APIの使い方
APIはJavaScriptなどでパラメーターをつけてGETなどで飛ばし、それに対してJSONやXMLなどで必要情報が返ってくる。といった形式のものが多いです。
最近はプログラム言語が扱いやすいJSONのほうが主流になってきています。見た目でわかりやすいXMLと比べてJSONは見にくいものですが、JavaScriptなどでJSONの扱いの楽さに慣れてしまうと。XMLを使うのがしんどくなります。
JavaScriptの場合
<script>
$(function(){
$.ajax({
type:'get',
url:'https://www.googleapis.com/youtube/v3/【APIの相対URL】',
dataType:'json',
data: {
key:'【APIキー】'
}
}).done(function(data) {
var json = JSON.stringify(data, null,"");
}).fail(function() {
console.log('error');
});
});
</script>
PHPの場合
GETを飛ばしてJSONなどで受け取るAPIはどんな言語でも使える事が多いです。サーバプログラムを活用すれば受け取ったデータを元に、更に複雑な仕組みを作りこむ事ができるでしょう。
$data = http_build_query(
array(
'part' => 'snippet',
'channelId' => 【チャンネルID】,
'maxResults' => 10,
'order' => 'date',
'key' => 【APIキー】
)
);
$header = Array(
"Content-Type: application/x-www-form-urlencoded",
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
);
$options = array('http' =>
array(
'method' => 'GET',
'header' => implode("\r\n", $header),
'header' => 'Referer: http://pikodon.com/'."\r\n"
)
);
$apiUrl = 'https://www.googleapis.com/youtube/v3/search';
$json = @file_get_contents($apiUrl . '?' . $data, false, stream_context_create($options));
$retData = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
Youtube Data API公式サイト
Youtube Data APIの利用制限対策はこちら