[PHP] YouTube APIの利用（動画情報の取得）

#今回の題
PHPでYouTubeのAPIを試してみました。
この記事ではYouTube上にある動画の情報を取得して表示するところまでを解説しています。
まだ触り始めたばかりであまり情報を持っていませんが備忘録として残します。
いつか誰かの参考になれば幸いです😉

#GoogleAPIライブラリのインストール
composerを使ってインストールします。

```terminal
$ composer require google/apiclient
```

インストールが終わり、以下の画像の様にvendor配下に**「google」**というディレクトリができていればOKです。
![スクリーンショット 2020-06-28 23.13.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/329967e4-38e1-3faa-4217-97ab53624f73.png)


#APIキーの取得
以下のページからからAPIキーを取得します。
[Googleのデベロッパーコンソール](https://console.developers.google.com/)
流れとしては、

1. YouTubeAPIを有効化（同時にプロジェクト作成）
2. プロジェクトのAPIキーを作成

だけです。

以下、APIキーの取得までの詳しい流れを書きます。
（基本的に画像内の赤枠をクリックしていけばOKです）

###YouTubeライブラリを有効化する
画面左側のバーから「ライブラリ」のリンクに飛ぶ。
![スクリーンショット 2020-06-29 1.06.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/38e300d8-b34c-48d8-ff67-3d17e34e3e3c.png)

飛んだ先で「YouTube」と検索。
![スクリーンショット 2020-06-29 1.10.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/0f7bda64-fa38-7a6c-4e08-abfdc2d2a840.png)

「YouTube Data API v3」を選択。
![スクリーンショット 2020-06-29 1.15.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/ee91bee1-a8ce-3dfc-05e3-a57b2b2de198.png)
「有効にする」をクリック。
しばらくするとページが遷移します。
![スクリーンショット 2020-06-29 0.24.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/898ff510-fd1e-86f7-d35f-168dd84c3c6a.png)


###２.APIキーを作成する
ページ遷移後、ページの上部に、「My First Project」 という名前のプロジェクトが作らているのがわかります。（画像黒下線部分）
問題なければ、画面左側のバーから「認証情報」のリンクに飛びます。
![スクリーンショット 2020-06-29 5.15.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/4d4e3e5e-a105-1f0d-8ecb-2b0740726577.png)

「認証情報を作成」をクリック。するとモーダルが出てきます。
「APIキー」をクリック。
![スクリーンショット 2020-06-29 5.22.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/79cba2e4-aa7c-f4f2-d7b8-c4a3165f7fbf.png)

「APIキー」が作成されました。（画像は塗りつぶしています）
あとで使いますのでコピーしておいてください。
![スクリーンショット 2020-06-29 5.29.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/546124/a6241f93-6c32-5b82-b10c-44c3b72ae6da.png)

#コード
例として、チャンネルIDで指定したチャンネルが投稿している動画を取得するコードです。
公式のサンプルコードを参考にさせていただきました。
https://developers.google.com/youtube/v3/code_samples/php?hl=ja#search_by_keyword

```php
<?php
//GoogleAPIライブラリを読み込む
require_once (dirname(__FILE__) . '/vendor/autoload.php');
//先ほど取得したAPIキーを定数にセットする
const API_KEY = "XXXXXXXXX";

//認証を行う
function getClient() 
{
    $client = new Google_Client();
    $client->setApplicationName("youtube-api-test");
    $client->setDeveloperKey(API_KEY);
    return $client;
}

//動画を取得する.
function searchVideos() 
{
    $youtube = new Google_Service_YouTube(getClient());
    //ここに好きなYouTubeのチャンネルIDを入れる
    $params['channelId'] = 'XXXXXXXXX';
    $params['type'] = 'video';
    $params['maxResults'] = 10;
    $params['order'] = 'date';
    try {
        $searchResponse = $youtube->search->listSearch('snippet', $params);
    } catch (Google_Service_Exception $e) {
        echo htmlspecialchars($e->getMessage());
        exit;
    } catch (Google_Exception $e) {
        echo htmlspecialchars($e->getMessage());
        exit;
    }
    foreach ($searchResponse['items'] as $search_result) {
        $videos[] = $search_result;
    }
    return $videos;
}

$videos = searchVideos();

//取得した動画のサムネを表示してみる
foreach ($videos as $video) {
    echo '<img src="' . $video['snippet']['thumbnails']['high']['url']. '" />';
}
```
以上。

#一言
YouTubeaAPIで一番お手軽にできる動画の取得のみを行ってみました。
リソースの挿入、更新、または削除を実行する操作の場合は、ユーザー認証が別途必要なので興味のある方は調べてみてください。

#参考
公式
https://developers.google.com/youtube