タイトル: エラー一覧
SEOタイトル: YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。
<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;background:#fffbea;border:1px solid #f4c430;margin:1em 0;width:100%"><tr><td style="background:#f4c430;color:#000;font-weight:bold;padding:8px">この記事の要点</td></tr><tr><td style="padding:10px"><ul><li>YouTube Data API (v3) で発生しやすいエラーの入口ページ</li><li><strong>403 系が大半</strong> — API キー未指定 / 利用上限超過 / リファラー制限の 3 パターンに分かれる</li><li>切り分けの順序: ① API キーの存在 → ② 利用量と上限 → ③ HTTP リファラー制限</li><li>Google Cloud Console 側で API キーとアクセス元ドメインが一致しているか最初に確認するのが早い</li><li>クォータ(割当)は <strong>1 日 10,000 ユニット</strong>がデフォルト — 検索系は 100 ユニット消費するので 100 リクエストで枯渇</li></ul></td></tr></table>
<h2>YouTube Data API (v3) のエラー</h2>
<p>このページは、YouTube Data API (v3) で発生しやすいエラーの入口です。まずは API キー不足なのか、リファラー制限の問題なのか、クォータ超過なのかを切り分けて確認すると、原因にたどり着きやすくなります。</p>
<h2>代表的なエラー</h2>
<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#f3f4f6"><th>コード</th><th>メッセージ</th><th>主な原因</th><th>確認</th></tr></thead>
<tbody>
<tr><td>403</td><td>Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.</td><td>API キーが付いていない / 認証なしリクエストの上限超過</td><td>クエリパラメータに <code>key=YOUR_KEY</code> があるか</td></tr>
<tr><td>403</td><td>Requests from referer ... are blocked.</td><td>HTTP リファラー制限</td><td>Cloud Console の API キー設定で許可ドメインを確認</td></tr>
<tr><td>403</td><td>The request cannot be completed because you have exceeded your quota.</td><td>1 日の割当 (10,000 unit) 超過</td><td>Cloud Console → IAM → 割り当て で残量確認</td></tr>
<tr><td>403</td><td>The request is missing a valid API key.</td><td>API キー未送信</td><td>URL に <code>?key=...</code> が含まれているか</td></tr>
<tr><td>400</td><td>Invalid value for the request parameter</td><td>パラメータの形式不正(videoId が空など)</td><td>API リファレンスでパラメータ仕様を確認</td></tr>
<tr><td>404</td><td>Video not found / Channel not found</td><td>videoId / channelId 不在 or 削除済み</td><td>YouTube サイトで動画 URL が開けるか</td></tr>
<tr><td>401</td><td>Invalid Credentials</td><td>OAuth トークン期限切れ / 改ざん</td><td>リフレッシュトークンで再取得</td></tr>
</tbody>
</table>
<h2>Requests from referer ... are blocked. の見方</h2>
<p>このエラーは、YouTube Data API を利用するリクエストで Referer が空、または API キーに設定した「HTTP リファラー」制限に合致しないドメインからアクセスしたときに発生します。</p>
<h3>確認するべきこと</h3>
<ol>
<li>Google Cloud Console → <strong>APIs & Services → 認証情報</strong></li>
<li>該当 API キーをクリック</li>
<li><strong>アプリケーションの制限</strong>: 「HTTP リファラー (ウェブサイト)」が選択されているか</li>
<li><strong>ウェブサイトの制限</strong>: アクセス元のドメインが含まれているか
<ul>
<li>例: <code>https://example.com/*</code></li>
<li>サブドメイン含めるなら <code>https://*.example.com/*</code></li>
<li>localhost 開発なら <code>http://localhost:*/*</code> も追加</li>
</ul>
</li>
<li><strong>API の制限</strong>: 「YouTube Data API v3」が選択されているか</li>
</ol>
<h2>クォータ消費の目安</h2>
<table border="1" cellpadding="6" cellspacing="0" style="border-collapse:collapse;width:100%">
<thead><tr style="background:#f3f4f6"><th>操作</th><th>消費ユニット</th><th>1 日上限 (デフォルト 10,000)</th></tr></thead>
<tbody>
<tr><td>動画詳細取得 (videos.list)</td><td>1</td><td>10,000 回</td></tr>
<tr><td>チャンネル詳細取得 (channels.list)</td><td>1</td><td>10,000 回</td></tr>
<tr><td>プレイリスト一覧 (playlists.list)</td><td>1</td><td>10,000 回</td></tr>
<tr><td><strong>検索 (search.list)</strong></td><td><strong>100</strong></td><td>100 回(一気に枯渇する)</td></tr>
<tr><td>動画アップロード (videos.insert)</td><td>1,600</td><td>6 回</td></tr>
<tr><td>動画更新 (videos.update)</td><td>50</td><td>200 回</td></tr>
<tr><td>動画削除 (videos.delete)</td><td>50</td><td>200 回</td></tr>
</tbody>
</table>
<p><strong>search.list は重い</strong>ので、繰り返し呼び出すなら以下の最適化を:</p>
<ul>
<li>結果をキャッシュする(Redis / DB)</li>
<li>動画 ID を取って後は videos.list で詳細取得</li>
<li>1 リクエストあたりの結果数 (<code>maxResults=50</code>) を最大化</li>
<li>クォータ追加申請(Cloud Console から無料で申請可能、承認は数営業日)</li>
</ul>
<h2>API キーの取得手順(おさらい)</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-text">1. Google Cloud Console (console.cloud.google.com) にログイン
2. プロジェクトを作成 / 選択
3. 左メニュー → APIs & Services → ライブラリ
4. "YouTube Data API v3" を検索 → 「有効にする」
5. 左メニュー → 認証情報 → 「認証情報を作成」→ API キー
6. キーが発行されるので「キーを制限」で:
- アプリケーションの制限: HTTP リファラー
- ウェブサイト: 自サイトドメインを追加
- API の制限: YouTube Data API v3
7. キーをコピーして安全な場所に保存(公開リポジトリに絶対 push しない)</code></pre>
<h2>動作確認用 curl</h2>
<pre style="background:#1e293b;color:#e2e8f0;padding:1em;border-radius:6px;overflow-x:auto;line-height:1.5"><code class="language-bash"># 動画詳細取得(API キーは必ず HTTPS 経由で)
curl "https://www.googleapis.com/youtube/v3/videos?part=snippet,statistics&id=dQw4w9WgXcQ&key=YOUR_API_KEY"
# 期待される結果: 200 OK + JSON
# 403: API キーまたはリファラー制限の問題
# 400: パラメータ不正</code></pre>
<h2>関連</h2>
<ul>
<li>API キーは <strong>絶対にフロントエンドに直接埋め込まない</strong> — サーバ経由で叩く設計を推奨</li>
<li>商用利用は API 利用規約と YouTube ブランドガイドラインに従う</li>
<li>埋め込みプレーヤーは API キー不要で <code><iframe></code> で済むケースが多い</li>
<li>動画分析・統計用途では <strong>YouTube Analytics API</strong>(別 API)が必要なケースあり</li>
</ul>