他の Google API と同様に、Google Ads API は認証と認可に OAuth 2.0 プロトコルを使用します。OAuth 2.0 を使用すると、Google Ads API クライアント アプリケーションは、ユーザーのログイン情報を処理または保存することなく、ユーザーの Google 広告アカウントにアクセスできます。
Google 広告のアクセスモデルを理解する
Google Ads API を効果的に使用するには、Google 広告のアクセスモデルの仕組みを理解する必要があります。Google 広告アクセスモデル ガイドを参照してください。
OAuth ワークフロー
Google Ads API を使用する際に、よく使われるワークフローが 3 つあります。
サービス アカウント フロー
ワークフローに人間の操作が必要ない場合は、このワークフローをおすすめします。このワークフローでは、ユーザーが Google 広告アカウントにサービス アカウントを追加する構成手順が必要です。アプリは、サービス アカウントの認証情報を使用して、ユーザーの Google 広告アカウントを管理できます。Python ライブラリは次のように構成されています。
google-ads.yamlファイルまたは YAML 文字列を使用する場合は、次の内容を構成に追加して、ローカル環境の秘密鍵 JSON ファイルへのパスを設定します(ドメイン全体の委任を使用する場合は、オプションのimpersonated_emailも追加します)。json_key_file_path: JSON_KEY_FILE_PATH # Optional: only set if using Google Workspace domain-wide delegation: # impersonated_email: IMPERSONATED_EMAIL次に、
load_from_storageメソッドまたはload_from_stringメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()dictを使用してライブラリを構成する場合は、次の Key-Value ペアを追加し、構成dictを渡してload_from_dictメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "json_key_file_path": JSON_KEY_FILE_PATH, # ... } client = GoogleAdsClient.load_from_dict(configuration)環境変数を使用している場合は、
bash構成または環境に次の行を追加します。export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH次に、
load_from_envメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
これらの構成方法のいずれかに json_key_file_path 構成オプションが存在し、use_application_default_credentials オプションが False であるか未設定で、OAuth ユーザー認証情報キー(client_id、client_secret、refresh_token)が未設定またはコメントアウトされている場合、ライブラリはサービス アカウント フローを使用して自動的に承認します。
詳細については、サービス アカウントのワークフロー ガイドをご覧ください。
シングル ユーザー認証フロー
このワークフローは、サービス アカウントを使用できない場合に使用できます。このワークフローでは、次の 2 つの構成手順が必要です。
Google Ads API を使用して管理するすべてのアカウントへのアクセス権を 1 人のユーザーに付与します。一般的な方法は、ユーザーに Google Ads API の MCC アカウントへのアクセス権を付与し、その MCC アカウントにすべての Google 広告アカウントをリンクすることです。
ユーザーが gcloud CLI や
generate_user_credentialsコードサンプルなどのツールを実行して、アプリがユーザーに代わってすべての Google 広告アカウントを管理することを承認します。
ライブラリは、次のようにユーザーの OAuth 2.0 認証情報を使用して初期化できます。
gcloud CLI ツールを使用する場合(推奨)
認証情報を生成するドキュメントに沿って、ローカル環境でアプリケーションのデフォルト認証情報(ADC)を設定します。
google-ads.yamlまたは YAML 文字列に次の構成を追加します。use_application_default_credentials: true次に、
load_from_storageメソッドまたはload_from_stringメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()dictを使用してライブラリを構成する場合は、次の Key-Value ペアを含めてload_from_dictメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "use_application_default_credentials": True, # ... } client = GoogleAdsClient.load_from_dict(configuration)環境変数を使用している場合は、
bash構成または環境に次の行を追加します。export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS=true次に、
load_from_envメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
OAuth トークンを直接処理する場合
手順に沿ってコンソール プロジェクトを設定し、プロジェクトのクライアント ID とクライアント シークレットを含む JSON ファイルをダウンロードします。
Python クライアント ライブラリをマシンにクローンし、そのディレクトリに移動します。
git clone https://github.com/googleads/google-ads-python.git cd google-ads-python手順 1 でダウンロードした JSON ファイルの絶対パスを指定して、サンプルを実行します。
python examples/authentication/generate_user_credentials.py \ -c PATH_TO_CREDENTIALS_JSON完了すると、更新トークンがコンソールに出力されます。これをコピーして、次のステップのために保存します。
選択した構成に次の設定を追加して、ライブラリを構成します。
google-ads.yamlまたは YAML 文字列に次の構成を追加します。client_id: INSERT_OAUTH2_CLIENT_ID_HERE client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE refresh_token: INSERT_REFRESH_TOKEN_HERE次に、
load_from_storageメソッドまたはload_from_stringメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_storage()dictを使用してライブラリを構成する場合は、次の Key-Value ペアを含めてload_from_dictメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient configuration = { # ... "client_id": INSERT_OAUTH2_CLIENT_ID_HERE, "client_secret": ( INSERT_OAUTH2_CLIENT_SECRET_HERE ), "refresh_token": INSERT_REFRESH_TOKEN_HERE, # ... } client = GoogleAdsClient.load_from_dict(configuration)環境変数を使用している場合は、
bash構成または環境に次の行を追加します。export GOOGLE_ADS_CLIENT_ID=\ INSERT_OAUTH2_CLIENT_ID_HERE export GOOGLE_ADS_CLIENT_SECRET=\ INSERT_OAUTH2_CLIENT_SECRET_HERE export GOOGLE_ADS_REFRESH_TOKEN=\ INSERT_REFRESH_TOKEN_HERE次に、
load_from_envメソッドを呼び出します。from google.ads.googleads.client import GoogleAdsClient client = GoogleAdsClient.load_from_env()
詳細については、単一ユーザー認証ワークフロー ガイドをご覧ください。
マルチユーザー認証フロー
このワークフローは、アプリでユーザーがログインし、アプリがユーザーに代わって Google 広告アカウントを管理することを承認できる場合におすすめです。アプリは OAuth 2.0 ユーザー認証情報を構築して管理します。ライブラリは、次のようにユーザーの認証情報を使用して初期化できます。これは、アプリケーションが実行時に認証フローを実行するか、データストアから認証情報を読み込むことで認証情報を取得することを前提としています。
dict は、実行時に認証情報を取得するときに使用する最も簡単な構成メカニズムです。
from google.ads.googleads.client import GoogleAdsClient
configuration = {
# ...
"client_id": client_id,
"client_secret": client_secret,
"refresh_token": refresh_token,
# ...
}
client = GoogleAdsClient.load_from_dict(configuration)
詳細については、マルチユーザー認証ワークフロー ガイドをご覧ください。
手動認証
任意の方法で認証情報を生成し、クライアント クラスを直接インスタンス化して、GoogleAdsClient に手動で提供できます。作成した認証情報オブジェクトが google.auth.credentials.Credentials のインスタンスであると仮定すると、次のように渡すことができます。
from google.ads.googleads.client import GoogleAdsClient
from google.auth import default
# This line retrieves ADCs from the environment. You can use any authentication
# approach as long as the `credentials` variable is an instance of
# `google.auth.credentials.Credentials`.
credentials, _ = default(scopes=["https://www.googleapis.com/auth/adwords"])
client = GoogleAdsClient(
credentials=credentials,
use_proto_plus=True,
)
複数のアカウントを管理する
ユーザーが複数の Google 広告アカウントを管理することはよくあります。アカウントに直接アクセスするか、Google 広告クライアント センター(MCC)アカウントを使用します。Python クライアント ライブラリには、このようなケースを処理する方法を示す次のコード例が用意されています。
get_account_hierarchyのコード例は、Google 広告 MCC アカウントのすべてのアカウントのリストを取得する方法を示しています。list_accessible_customersのコード例は、ユーザーが直接アクセスできるすべてのアカウントのリストを取得する方法を示しています。これらのアカウントは、login_customer_id設定の有効な値として使用できます。