本文へスキップ
hdknr blog

GA4 / Search Console API の認証設定

GA4 と Search Console は API キーでは呼べず OAuth 必須。Google Cloud Console での発行手順と、refresh_token が 7 日で失効する原因・org_internal エラーの対処

概要

GA4 / Search Console / PageSpeed Insights をプログラムから叩くとき、最初にぶつかるのが「Google Cloud Console のどの画面で何を発行するのか」という壁。認証情報は 3 種類あり、呼ぶ API によって使い分けるという非対称性が混乱の元になる。

まず結論: API キーを使うのは PageSpeed だけ

発行するものConsole の画面使える APIいくつ必要か
API キーAIza...認証情報 > API キーPageSpeed Insights だけ1 本を使い回せる
OAuth クライアントclient_id / client_secret認証情報 > OAuth クライアント IDGA4 Data / GA4 Admin / Search Consoleプロジェクトに 1 つ(全部で共用)
refresh_tokenConsole では発行しない(自分のアプリのブラウザ認可で取得)同上スコープごとに 1 つ

GA4 Data API・GA4 Admin API・Search Console API の 3 つは OAuth クライアント 1 つを共用し、そこからスコープごとに refresh_token を取得する。OAuth 同意画面(対象 / Audience)の設定はプロジェクトに 1 回だけで全体に効く。

プロジェクトは 1 つにまとめる

API ごとにプロジェクトを分ける必要はない。むしろ分けると「OAuth クライアントを作ったプロジェクトと、API を有効化したプロジェクトが違う」という 403 の定番事故を踏む。

手順

1. プロジェクトを選ぶ(すべての作業の前に)

Console の操作はすべて同じプロジェクトを選んだ状態で行う。ここを外すと「有効にしたはずなのに 403」という最も多い失敗になる。

  1. 画面上部のプロジェクトセレクタが対象プロジェクトになっているか確認
  2. 右上アバターのメールアドレスが、対象の GA4 プロパティ / Search Console サイトを管理しているアカウントと同じか確認

2 番目は地味だが重要。複数の Google アカウントにログインしていると、URL の authuser= の違いだけで別人として操作していることがある。

2. API を有効化する

使う API(GA4 Data / GA4 Admin / Search Console / PageSpeed Insights)を、選んだプロジェクトで有効化する。

3. OAuth 認証情報を発行する

認証情報 > OAuth クライアント ID から発行し、client_id / client_secret を取得する。あわせて OAuth 同意画面(対象 / Audience)を設定する。

4. API キーを発行する(PageSpeed 専用)

PageSpeed Insights だけは API キーを発行し、必要に応じて利用制限をかける。

主要な落とし穴

refresh_token が 7 日で失効する

OAuth 同意画面の公開ステータスがテスト(Testing)のままだと、発行された refresh_token は 7 日で失効する。運用に載せるなら同意画面を本番公開の状態にする必要がある。「動いていたのに 1 週間後に必ず落ちる」症状の原因はほぼこれ。

org_internal でブロックされる

同意画面の対象(Audience)が組織内部(internal)に設定されていると、「組織内のユーザーのみが利用できます」という org_internal エラーでブロックされる。組織外のアカウントで認可する場合は対象を外部(external)にする必要がある。

403 の切り分け

運用に載せるときのチェックリスト

関連ページ

ソース記事