##APIの叩き方概要
App Store Connect APIは App Store Connectの「ユーザーとアクセス」の「キー」から発行、DLしたキーをJWT(JSON Web Tokens)でアカウントを認証する。権限がない場合は「キー」タブは表示されない。
ちなみにこのキーは1度しかDLできない。
詳細:https://developer.apple.com/documentation/appstoreconnectapi/creating_api_keys_for_app_store_connect_api
以下、具体的手順
App Store Connect API
##ユーザとアクセスからキーを発行する
発行できる権限を持ったアカウントで発行(現在は個人アカウントではリクエストするのみ)
##JWTを使用してtokenを発行する処理を書く
作成するJWTには以下の内容が必要
・JWT header
・JWT payload
・JWTの署名
tokenを発行する
WWDCの動画にもあるrubyで記述
jwtがない場合は事前に入れる(https://qiita.com/oshou/items/6283c2315dc7dd244aef からの gem 'jwt'を追加+bundle install)
token.rb
require "base64"
require "jwt"
ISSUER_ID = ""
KEY_ID = ""
private_key = OpenSSL::PKey.read(File.read("p8ファイルのアドレス/hoge.p8"))
token = JWT.encode(
{
iss: ISSUER_ID,
exp: Time.now.to_i + 20 * 60,
aud: "appstoreconnect-v1"
},
private_key,
"ES256",
header_fields={
kid: KEY_ID }
)
puts token
ISSURE_ID, KEY_ID,p8ファイルのアドレスを入力する.
上記を実行するとtokenが発行できます
ruby token.rb
##tokenの期限が切れるまでに叩く
curl https://api.appstoreconnect.apple.com/v1/apps -H "Authorization: Bearer 発行したトークン"
これで叩けます。
期限切れになると以下のように返ってくる。
{
"errors": [{
"status": "401",
"code": "NOT_AUTHORIZED",
"title": "Authentication credentials are missing or invalid.",
"detail": "Provide a properly configured and signed bearer token, and make sure that it has not expired. Learn more about Generating Tokens for API Requests https://developer.apple.com/go/?id=api-generating-tokens"
}]
}
現時点ではまだprovisioningなどができないため(404が返ってきてしまう)のでアップデートに期待
##参考:
WWDC動画
https://developer.apple.com/videos/play/wwdc2018/303/ (後半のDEMOの部分が分かりやすいです
App Store Connect API
https://developer.apple.com/documentation/appstoreconnectapi