【Apple Search Ads】Campaign Management APIのユーザー作成手順
これは何?
「Apple Search Ads」のCampaign Management API ユーザー作成の手順です。
※ この記事では「Apple Search Ads」は「ASA」と略します。
コンテキスト
ASA Campaign Management APIのVersion4では、Version3までの証明書を使った認証方法が使用出来ません。代わりにOAuth2.0 アクセストークンを使用する必要があります。
利用手順は
- ASAダッシュボードからAPIユーザーを招待して追加
- APIユーザー側で公開鍵を登録して認証用IDを発行
- JSON Web Token を生成
- アクセストークンをリクエスト
- トークンを使ってアクセス
といった流れになります。
なお、現在のASAダッシュボードでは、旧方式の作成済み証明書のダウンロードは可能ですが、新規作成は出来ない様です。
APIユーザーの追加
まず管理権限のあるASAアカウントでダッシュボードへログイン。
- 「アカウント設定」 > 「ユーザー管理」 >「ユーザーの招待」
https://app.searchads.apple.com/cm/app/settings/users
と進みます。
ユーザを招待する
招待される側(APIユーザー)用にAppleIDが必須となるので事前に用意しておきましょう。
- APIを利用するユーザー名情報
- Apple ID
を入力します。
ユーザーアクセスとロールを選択
ユーザーのアクセス権限とロールを選択します。
今回の様なAPI利用であれば、以下の3つの中から適切なものを選択する形になると思います。
-
APIアカウントマネージャー(読み書き)
- 読み取りおよび書き込み権限
- アカウント内のレポートの表示とすべてのキャンペーンの管理、API接続の管理が可能
-
APIアカウント読み取り専用
- 読み取り専用権限
- アカウント内の全てのキャンペーンのレポートおよびデータの表示が可能
-
制限付きアクセス
- 特定キャンペーンのみに絞って権限(読み取りor読み書き)を選択可能
- 特定キャンペーンのみに絞って権限(読み取りor読み書き)を選択可能
アクセスとロールを決定したら、「招待の送信」ボタンを押下し、招待メールを送信します。
招待を承認する
招待メール内に記載された招待リンクを開きます。
この時、
- 招待を受けた側のユーザーのAppleIDでログイン
する必要があるので注意。(自分はこれで少しハマりました。。。)
ログイン後
- メールに記載されている招待コードを入力してアクティベート
- ASAダッシュボードにログイン
(ここでも招待を受けた側のAppleIDでログインしている事を要確認)
という流れになります。
なお、以下以降の手順は、招待を受けた側アカウントでの作業となります。
鍵の作成する
まず、秘密鍵を生成します。
openssl ecparam -genkey -name prime256v1 -noout -out asa-api-private-key.pem
そして、公開鍵を書き出し
openssl ec -in asa-api-ks-private-key.pem -pubout -out asa-api-public-key.pem
書き出した公開鍵の中身をコピーします。
less asa-api-public-key.pem | pbcopy
公開鍵を登録
-
ASAダッシュボードの「アカウント設定」を開きます
-
「API」タブを選択
-
表示される「Public Key」欄に先程書き出した公開鍵の中身を貼り付けます
-
「Generate API Client」ボタンを押下
-
無事完了すると、以下が発行されます
- clientId
- teamId
- keyId
※ 各IDは実装時に必要になるので控えておく
アクセストークンのリクエスト
以上で、APIを利用するための事前準備は完了です。
これまでの手順で作成した
- 秘密鍵ファイル
asa-api-private-key.pem
- clientId
SEARCHADS.0000000-00000-0000-000-00000
- teamId
SEARCHADS.0000000-00000-0000-000-00000
- keyId
xxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxx
を使って、JSON web token (JWT) を生成し、アクセストークンをリクエスト → 取得したアクセストークンでAPIをコールする...という流れになります。
実装方法はまた別記事にまとめたいと思います🙏
Discussion