活用事例一覧へ
2026年7月27日開発・エンジニアリング検証時期:2026年4月

Google広告APIをAIにつなぐ|認証で詰まる2つの罠と6種類の認証情報【AI活用検証vol.117】

Google広告APIをAIにつなぐ|認証で詰まる2つの罠と6種類の認証情報【AI活用検証vol.117】

Google広告を運用していると、毎日のように管理画面へログインしてデータを確認する作業が発生します。「過去30日のキャンペーンパフォーマンスはどうだったか」「先週CPAが高かったキャンペーンはどれか」——そのたびにブラウザを開き、フィルタをかけ、期間を設定する。

この検証では、AIから自然言語でGoogle広告APIを叩ける状態をMCPサーバーで実現しました。ただし最大の壁は実装ではありません。認証を通すほうが、MCPサーバーのコードを書くより10倍大変でした。

本記事は3回シリーズの第1回です。第2回でローカルMCPサーバーの構築、第3回でリモートMCPサーバーの構築を扱います。

この検証の概要

検証時期

2026年4月5日

やりたかったこと

AIに「過去30日のキャンペーンパフォーマンスを見せて」と聞くだけで、Google広告APIからデータが返る状態をつくる

使用技術

MCP(Model Context Protocol)/Google Ads API v19/OAuth 2.0

本記事の範囲

認証まわりのセットアップ(最初にして最大の壁)

必要な認証情報

6種類

結論:詰まるのは実装ではなく認証

Google広告APIの認証は、必要なものが多く、手順も長く、エラーメッセージが分かりにくいという三重苦があります。

特に厄介なのが次の2点です。どちらも「設定は正しいのに動かない」ように見えます。

  • login-customer-id に何を指定するか——間違えると403
  • Developer Tokenの Pending 状態——APIは通るのにデータが空で返る

後述しますが、この2つを知っているかどうかで所要時間がまったく変わります。

MCPとは

MCP(Model Context Protocol)は、Anthropic社が提唱したオープン標準プロトコルです。よく「AIアプリケーションのためのUSB-Cポート」と表現されます。

USB-Cがどんなデバイスでも同じポートで接続できるように、MCPはどんな外部サービスでも同じプロトコルでAIにつなげられるという思想です。

Claude / Cursor(AIクライアント)
      ↕ MCP プロトコル
   MCPサーバー
      ↕
   外部API(Google広告 API など)

2026年現在、MCPのエコシステムは急速に広がっています。Web版のClaudeからもMCPサーバーに接続でき、VS Codeとの統合も進んでいます。パッケージマネージャで公開されたMCPサーバーを1クリックでインストールできる環境も整いつつあります。

必要な認証情報は6種類

#

必要なもの

取得場所

1

GCPプロジェクト

Google Cloud Console

2

Google Ads APIの有効化

GCPのAPIライブラリ

3

OAuth同意画面の設定

GCPの認証情報

4

OAuthクライアントID(client_id + client_secret)

GCPの認証情報

5

デベロッパートークン

Google広告管理画面(GCPではない)

6

リフレッシュトークン

OAuth認証フロー

取得場所がGCPとGoogle広告管理画面の2箇所に分かれている点が、最初の混乱ポイントです。

GCPプロジェクト作成
  ↓
Google Ads API有効化
  ↓
OAuth同意画面設定
  ↓
OAuthクライアントID作成 → client_id + client_secret取得
  ↓
Developer Token取得(Google広告管理画面のAPIセンター)
  ↓
認可コード取得(ブラウザでOAuth認証)
  ↓
リフレッシュトークン発行(curlでトークン交換)
  ↓
API動作確認(curlで直叩き)

Step 1〜3:GCP側の設定

Google Cloud Consoleで新規プロジェクトを作成し、「APIとサービス」→「ライブラリ」から Google Ads API を有効化します。

次にOAuth同意画面を設定します。ポイントは3つです。

  • ユーザータイプ: 「外部」を選択
  • スコープ: https://www.googleapis.com/auth/adwords を追加
  • テストユーザー: 自分のGoogleアカウントのメールアドレスを追加

テストユーザーの追加を忘れると、認証時に「このアプリはアクセスできません」というエラーが出ます。見落としやすい項目です。

続いて「認証情報を作成」→「OAuthクライアントID」で、アプリケーションの種類に「デスクトップアプリ」を選択します。作成すると client_id と client_secret が表示されるので控えておきます(JSONでダウンロードも可能)。

Step 4:Developer Tokenの取得

ここが特殊です。Developer TokenはGCPではなく、Google広告の管理画面から取得します。

Google広告にログインし、「ツールと設定」→「APIセンター」に進むと、22文字の英数字トークンが表示されます。

そして重要な注意点があります。

  • 最初に発行されるDeveloper Tokenは Pending(テスト)状態
  • Pending状態では、テストMCCアカウント配下でしか動作しない
  • 本番のGoogle広告アカウントにアクセスするには本番承認(Standard Access)が必要
  • 承認には通常1〜3営業日かかる

承認待ちの時間が発生するため、早めに申請しておくことが重要です。実装が終わってから申請すると、そこで足止めされます。

Step 5:リフレッシュトークンの発行

① 認可コードの取得

次のURLをブラウザで開きます(your-client-id は取得した client_id に置き換え)。

https://accounts.google.com/o/oauth2/auth?client_id=your-client-id.apps.googleusercontent.com&redirect_uri=http://localhost&scope=https://www.googleapis.com/auth/adwords&access_type=offline&response_type=code

ログインしてアクセスを許可すると http://localhost にリダイレクトされます。

ここで戸惑いやすい点があります。localhostにサーバーが立っていないため、ブラウザには「サイトに到達できません」と表示されます。しかし問題ありません。アドレスバーのURLに含まれる code= の値が認可コードです。

http://localhost/?code=4/0Axxxxxxxxxxxxxxxxxxxxxxxx&scope=...

② トークン交換

curl \
  --data "grant_type=authorization_code" \
  --data "client_id=your-client-id.apps.googleusercontent.com" \
  --data "client_secret=your-client-secret" \
  --data "redirect_uri=http://localhost" \
  --data "code=取得した認可コード" \
  https://www.googleapis.com/oauth2/v3/token

成功すると次のようなレスポンスが返ります。

{
  "access_token": "ya29.xxxxx...",
  "expires_in": 3599,
  "refresh_token": "1//0exxxxx...",
  "scope": "https://www.googleapis.com/auth/adwords",
  "token_type": "Bearer"
}

refresh_token の値を必ず保存してください。access_tokenは1時間で期限切れになりますが、refresh_tokenがあれば何度でも再発行できます。

Step 6:curlで動作確認

アカウント一覧の取得で疎通を確認します。

curl -f --request GET \
  "https://googleads.googleapis.com/v19/customers:listAccessibleCustomers" \
  --header "Content-Type: application/json" \
  --header "developer-token: your-developer-token" \
  --header "Authorization: Bearer your-access-token"

さらにGAQL(Google Ads Query Language)でキャンペーン一覧も取得できます。

curl -i -X POST \
  "https://googleads.googleapis.com/v19/customers/your-customer-id/googleAds:searchStream" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your-access-token" \
  -H "developer-token: your-developer-token" \
  -H "login-customer-id: your-mcc-id" \
  --data '{
    "query": "SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id"
  }'

ハマりポイント①:login-customer-id の罠

GAQLクエリを投げる際、ヘッダーに login-customer-id を指定します。MCC(マネージャーアカウント)配下のクライアントアカウントを操作する場合です。

ここでクライアントアカウントのIDを指定すると 403 Forbidden になります。

指定箇所

入れるID

login-customer-id ヘッダー

MCCのID

URLパスの customers/{customer-id}

操作対象のクライアントアカウントID

login-customer-id は「どのMCCとしてログインするか」を示すヘッダーです。操作対象を指定するものではありません。

ハマりポイント②:Pending Developer Tokenの壁

こちらのほうが厄介です。APIは正常に通るのに、データが空で返ります。

原因はDeveloper TokenのPending状態です。

  • Pending状態ではテストMCCアカウント配下でしか動作しない
  • テストMCCと本番MCCは完全に分離されている。テストMCCに本番のクライアントアカウントを紐づけることはできない
  • テストMCC自体にキャンペーン等のデータが存在しない

つまり「APIは通っているのにデータが返ってこない」状態は、何も間違っていません。テストMCCにデータがないだけです。

ここで実装を疑い始めると、原因のない場所を延々と探すことになります。

本番承認後の切り替え

本番承認(Standard Access)が下りたら、以下を切り替えます。

  • login-customer-id本番MCCのID
  • URLの customers/{id}本番クライアントアカウントのID

よくある質問

MCPとは何ですか?

AIと外部APIをつなぐオープン標準プロトコルです。「AIアプリケーションのためのUSB-Cポート」と表現されます。どんな外部サービスでも同じプロトコルでAIに接続できます。

Developer Tokenはどこで取得しますか?

GCPではなく、Google広告の管理画面(ツールと設定 → APIセンター)です。22文字の英数字が表示されます。

APIは成功するのにデータが空です

Developer TokenがPending状態の可能性が高いです。Pending状態ではテストMCC配下でしか動作せず、テストMCCにはデータが存在しません。実装は正しい可能性があります。本番承認には1〜3営業日かかります。

403エラーが出ます

login-customer-id にクライアントアカウントのIDを指定していないか確認してください。ここにはMCCのIDを入れ、操作対象はURLパスの customers/{id} で指定します。

まとめ

  • MCPサーバーはコードを書くより認証を通すほうが大変だった
  • 必要な認証情報は6種類。取得場所がGCPとGoogle広告管理画面に分かれている
  • Developer TokenはGoogle広告管理画面から取得(22文字)。最初はPending状態
  • Pending状態ではテストMCC配下のみ。データが空で返るのは正常
  • 本番承認には1〜3営業日。実装前に申請しておく
  • login-customer-id にはMCCのIDを入れる。クライアントIDを入れると403
  • 認可コードはリダイレクト先がエラー表示でもURLから取得できる

外部APIとの連携では、認証の設計と承認フローが実装より重くなることがあります。承認待ちが発生する要素は、先に申請してから開発に入ると止まりません。

次回は、この認証情報を使って Python + FastMCP でMCPサーバーを実装します。

株式会社AI棒では、こうしたAI活用の検証を日々行い、企業の広告運用・マーケティング業務へのAI導入を支援しています。ご相談はお問い合わせフォームから、継続的な伴走支援についてはAI参謀をご覧ください。

関連する検証事例

© 株式会社AI棒 All Rights Reserved.