Googleのドキュメントを読んで簡単そうだと思ったら要注意。必ず罠があります。Googleのあくらつなライフハック。
ステップ2まではUIがアップデートされているので説明文と画面の乖離があって若干わかりづらいですが、まあ大丈夫。jsonファイルのダウンロードまでがんばってください。
次、ステップ3ではやらなければいけないことがヌケています。
「サービスアカウントユーザーを追加」
を押して、ユーザー追加をしてください。メールアドレスはさっきダウンロードしたサービスアカウントjsonのclient_emailをメールアドレスとして入力します。役割は「管理者」です。
$ composer require googleads/googleads-php-lib
composerでライブラリをインストールします。が、このとき
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing googleads/googleads-php-lib (10.1.0): Extracting archive
バージョンが10.1.0といった明らかに古い(github上では最新バージョンは63)場合、このままではこれに続くサンプルプログラムは動作しません。
error: [Error] Class "Google\AdsApi\Common\OAuth2TokenBuilder" not found
うむ。
composerで強制的に最新を入れろと指示をすると
Problem 1
- Root composer.json requires googleads/googleads-php-lib ^63.0 -> satisfiable by googleads/googleads-php-lib[63.0.0].
- googleads/googleads-php-lib 63.0.0 requires ext-soap * -> it is missing from your system. Install or enable PHP's soap extension.
soap!
こいつのせいか。というわけでインストールします。dockerなのでDockerfileに記述してbuildします。
参考:https://stackoverflow.com/questions/50121641/enable-soap-for-php-in-docker-container
docker-php-ext-install soap
libxml2-devも必要なので適宜加えてbuildしなおします。
終わったら、composerでライブラリをインストールしなおしましょう。ちゃんと最新版が入ります。
そしらた満を持してサンプルを動作させましょう。
[2023-**-**T16:37:08.951082+09:00] DFP_SOAP.INFO: networkCode=************ service=NetworkService method=getCurrentNetwork responseTime=599 requestId=************************* server=ads.google.com isFault=0 faultMessage=
Network with code ********** and display name '**********' was found.
動いた!
DFPはSOAPで動く。俺憶えたばい。