【iOS】App Store Connect APIとは?JWTの取得方法と使い方

この記事からわかること
- App Store Connect APIとは?
- JWT(JSON Web Token)とは?
- APIキーの取得方法
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.1
- watchOS:10.1
- Swift:5.9
- macOS:Sonoma 14.1
公式リファレンス:App Store Connect API
App Store Connect APIとは?
「App Store Connect API」とはAppleが公式で提供しているApp Store Connectでの処理を自動化するためのREST APIです。このAPIを使用することでApp Store Connectで手動で行っていた以下の作業などをプログラムを介して実行することができるようになります。
- アプリケーションのメタデータ管理
- ビルドのアップロードやApp Storeへの提出
- TestFlight:テスターの管理、ベータ版アプリケーションの配布、フィードバックの収集
- アプリの売上、インストール数、ダウンロード数などのデータの取得
- チームメンバーの管理、権限の設定
- etc..
仕組みとしては認証した状態でエンドポイントに対して特定のJSON形式のデータを送信するだけです。
認証にはJWT(JSON Web Token)という仕組みを用いています。
JWT(JSON Web Token)とは?
JWT(JSON Web Token)とはJSON形式の認証情報を符号化したトークンです。JWTは以下の3つの部分から構成されており、これらの値をBase64URL方式で符号化し、それをピリオド(.)で連結した値になります。
- ヘッダー (Header):トークンや署名の形式情報
- ペイロード (Payload):情報の本体
- 署名 (Signature):認証情報本体
App Store Connect APIでは暗号化アルゴリズムはES256
でないといけないようで、トークンの有効時間も20分以上に設定すると無効になってしまうようです。
JWTの生成方法
公式リファレンス:Creating API Keys for App Store Connect API
JWTを生成するにはApp Store ConnectからダウンロードしたAPIキーを使用します。このAPIキーは「Team(チーム)キー」と「Individual(個人)キー」の2種類があるようです。
APIキーを取得するにはApp Store Connectの「ユーザーとアクセス」>「統合」>「App Store Connect API」を開きます。ここからチームキーと個人キーを生成することができます。(私の場合は個人キーはローディングが終わらず生成できませんでした)
初めて生成する場合は「アクセス権をリクエスト」をクリックして承認してもらう必要があります。

これを押下するとポップアップが表示され、「提出」をクリックするとすぐに承認されました。

承認されると画面が変わりAPIキーが生成できるようになります。、「APIキーを生成」をクリックします。

キーの名称と権限を指定します。

これでAPIキーが生成されたのでダウンロードしていきます。(ダウンロードは1回しかできません)ダウンロードすると.p8
形式のファイルが取得できます。またここに表示されている「IssuerID」と「キーID」は後で使用するのでコピーしておいてください。

rubyスクリプトでトークンを生成
続いて取得したAPIキーを使用してJWTを実際に生成します。生成する方法はいろいろあるようですがひとまず動作確認をするためのRubyのスクリプトを実装します。
APIキーがあるディレクトリに合わせて「token.rb」ファイルを作成します。
中に以下のように記述しISSUER_ID
とKEY_ID
、APIキーファイルのパスを自身のものに置き換えます。
参考文献:App Store Connect APIの叩き方
完成したら以下コマンドを実行するとピリオド(.)で連結されたJWTを取得することができます。
取得したJWTを使用してAPIを叩いてみます。/apps
を指定することでApp Store Connect内のアプリ情報(アプリ名やバンドルID、レビューの数など)をJSON形式で取得することができます。
トークンの有効時間の20分を経過してリクエストを送信すると以下のように認証エラー(401)が返ってくるようになります。
ご覧いただきありがとうございました。