Youtube Data API

もくじ > Web開発ノート > リッチサイト+JavaScript

特定の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の利用制限対策はこちら