iOSアプリでYouTubeを検索して動画一覧を表示したい
お気に入りに登録などアカウント周りの処理はせず、YouTubeに公開されている動画を検索して一覧を表示したい。
そう思ったので、そのAPIにアクセスするまでの手順をまとめます。
ざっくり手順は公式ドキュメントに記載されていますが、個人的にやや混乱しがちだったので。
Google にプロジェクトを登録する
まず Google APIs の認証情報ページ にいきます。
以下のようなダイアログが表示されるので、国と利用規約を確認して、右下の「同意して続行」をクリックします。

以下のような画面に変わるので、「プロジェクトを作成」をクリックします。

で、以下の画面でプロジェクト名と場所に適切な内容を入力して、「作成」をクリック。

以下のような画面になりました。
「 ⚠️ 必ず、アプリケーションに関する情報を使用して OAuth 同意画面を構成してください。」
という気になる注意書きがありますが、内容をざっと見るとOAuth 用の設定のようでした。
今回はOAuth ではなくAPIキーによる認証のため、スルーします。

これでプロジェクトの作成が完了しました。
API キーを作成し、若干の項目を設定する
次にAPIキーを作成します。
APIキーはプロジェクトに紐づいています。
URLにAPIキーを付与しないとAPIがエラーを返します。
「+ 認証情報を作成」をクリックすると、認証情報の種類一覧が出てくるので、「API キー」を選択します。

すると以下のようなダイアログが表示され、APIキーが作成されました。
このAPIキーをURLのパラメータに含めれば、誰でもどこでもAPIにアクセスできるようになりました。
検証用とは言えそれは怖いので、アクセス制限をかけます。
右下の「キーを制限」をクリックします。

以下の画面になりました。
よければついでにAPIキーの名前も変えます。
なおこの画面はいつでも見られるので、ここにある情報は後で何回でも変更可能です。
「⚠️ このキーに制限はありません。」と表示されています。
怖いですね。
「アプリケーションの制限」でiOSアプリを選択します。

iOSアプリを選択すると以下の表示になります。
「項目を追加」と押すとバンドルIDの入力欄が出てくるので埋めます。
先述の通り、この画面は後でも表示できるので、まだアプリのバンドルIDの用意がない場合は後で埋められます。

で、そのすぐ下の「キーを制限」を選択します。
すると以下のように「Select APIs」というセレクトボックスが表示されますが、何も選択できません。
プロジェクトで利用可能なAPIをまだ設定していないためです(すぐ後で設定します)。
つまりキー制限をするといまは何のAPIも叩けません。
とりあえず「保存」を押せば、一旦完了です!

保存を押すと、もとの画面に戻ります。
以下画像の通り、APIキーの行をクリックすると先程のAPIキーの制限設定や名前変更画面に遷移します。
iOSアプリのバンドルIDを決定したら設定します。

作成したAPIキーに利用可能なAPIを設定する
APIキーは作成できましたが、利用可能なAPIを選択していない(できない)ので、何もアクセスできません。
なので、YouTube Data API をアクセス可能にします。
画面上の検索窓で「youtube」と入力すると以下のようなサジェストが表示されるので、「YouTube Data API v3」をクリックします。

もちろん「有効にする」を押します。
その右の「このAPIを試す」を押すとAPIドキュメントに飛ばされますが、APIドキュメントにはブラウザでAPIアクセスできるサンドボックスが用意されているので、多分それを使ってねということだと思います。

「有効にする」ボタンを押すと、以下の画面に移ります。
「認証情報」をクリックします。

先程作成したAPIキーが表示されるのでクリックします。

「Select APIs」をクリックするとYouTube Data API v3 が選択可能になっています。
チェックを入れて「保存」をクリックして下準備は終了です。

これでAPIが叩けるようになりました!
APIにアクセスする
あとは検索APIのドキュメントを見つつパラメータを組み合わせてGETアクセスするのみです。
実際のURLは以下のようになります。
keyパラメータを付与するのを忘れずに!
https://www.googleapis.com/youtube/v3/search?key=<作成したAPIキー>&好きなパラメータ...
ちなみにpart キーに snippet
、type キーに video
と指定すると、サムネイルやタイトルや動画のIDが取得できてYouTubeの検索結果っぽくできそうです。
ちなみに、ドキュメントだけだとAPIのレスポンススキーマが把握しづらいと思います。
そんなときはドキュメントの下の方にある実際に試してみるから、ブラウザ上でAPIを叩いてレスポンスを確認できます。
今回APIキーでのアクセスをiOSアプリからのみに制限したことで、アドレスバーにURLを入力してレスポンスを確認するという方法が取れない状態です。
そういうときのためにこの機能があるのだと思います。
これでAPIを叩いて色々いじれるようになりました!
最後に
以上です。お疲れ様でした!