yikegaya’s blog

仕事関連(Webエンジニア)について書いてます

Google Ads APIのDEVELOPER_TOKEN_PROHIBITEDエラー対応メモ

業務でGCP環境にGoogle Ad APIを使ったサービスをデプロイしたんですが認証関連のエラーで割と面倒な件があったので対応メモです。

GCP環境でGoogle Ads APIのサービスをデプロイしたんですが当初Google Ads APIのテストアカウントの開発者トークンはローカルで開発に使っていたのと同様にテストアカウントへのアクセス権を持ったMCCアカウントのものを環境変数に設定していました。

その状態でテストアカウントで動作確認が終わったので環境変数の開発者トークンを支払い情報が設定されておりエクスプローラー権限を持ったGoogle Adsアカウントに切り替えて再度Google OAuth認証→Google Ads APIのエンドポイントをcallしたところcode403、「The caller does not have permission」メッセージとDEVELOPER_TOKEN_PROHIBITED statusのエラーになるようになりました。

DEVELOPER_TOKEN_PROHIBITED statusについてのリファレンスを参照すると以下のように記載がありどうやら初回認証時にOAuth認証に使っていたOAuthクライアントとGoogle Ads APIに暗黙的にペアリングができてしまっていて同じGCPプロジェクトのOAuthクライアントを別Google Adsアカウントで使えなくなっていたようでした。

各 Google API Console プロジェクトは、1 つのクライアント センター(MCC)アカウントの開発者トークンにのみ関連付けることができます。Google Ads API リクエストを行うと、デベロッパー トークンは Google API Console プロジェクトと永続的にペア設定されます。新しい Google API Console プロジェクトを使用しない場合、リクエストを行うと DEVELOPER_TOKEN_PROHIBITED エラーが発生します。

developers.google.com

というので今回はOAuthクライアントのみ別GCPプロジェクトのものに差し替えて解決しました。