asc-auth について
App Store Connect 用のコマンドライン認証管理ツールです。複数の名前付きアカウントを保存し、`asc` コマンドで使うアクティブアカウントを選択できます。レポート用のベンダー番号に対応し、環境変数の認証情報も利用します。
主な機能
- 01複数の名前付きアカウントを保存
- 02アクティブアカウントを切り替え
- 03認証情報の一覧表示、確認、更新、削除
- 04ファイルまたは環境変数から認証情報を解決
- 05レポート用のベンダー番号を保存
- 06旧形式の単一アカウントファイルを移行
活用シーン
- 01個人用と業務用のアカウントを設定
- 02`asc` コマンドで使用アカウントを切り替え
- 03アクティブな認証情報を確認
- 04売上または財務レポート用のベンダー番号を設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tddworks/ asc-cli-skills --skill asc-authインストール後、Claude Code で/asc-authを入力して読み込まれたか確認します。
詳細
asc auth — マルチアカウント認証
~/.asc/credentials.json の App Store Connect API キー認証情報を管理します。複数の名前付きアカウントに対応しており、アクティブなアカウントはすべての asc コマンドで自動的に使用されます。
コマンド
login — アカウントを保存する
asc auth login \
--key-id <KEY_ID> \
--issuer-id <ISSUER_ID> \
--private-key-path ~/.asc/AuthKey_KEYID.p8 \
[--name <alias>] # optional; defaults to "default"
[--vendor-number <number>] # optional; for sales/finance reports
--nameにスペースを含めることはできません(ハイフンまたはアンダースコアを使用してください。例:work-org)--nameを指定しない場合は、"default"として保存されます- 保存したアカウントは自動的にアクティブに設定されます
- 既存の名前で保存すると、そのアカウントが更新されます(安全に上書きされます)
- PEM コンテンツをそのまま渡すには、
--private-key-pathの代わりに--private-keyを使用してください --vendor-numberは任意です。認証情報とともに保存され、レポートコマンドで自動的に解決されます
出力 — AuthStatus JSON:
{
"data": [{
"affordances": {
"check": "asc auth check",
"list": "asc auth list",
"login": "asc auth login --key-id <id> --issuer-id <id> --private-key-path <path>",
"logout": "asc auth logout"
},
"issuerID": "abc-def-456",
"keyID": "KEYID123",
"name": "work",
"source": "file"
}]
}
list — 保存済みの全アカウントを表示する
asc auth list [--pretty] [--output table]
- アクティブなアカウント:
"isActive": true - 非アクティブなアカウントには、切り替え用の
"use"アフォーダンスがあります
出力 — ConnectAccount の配列:
{
"data": [
{
"affordances": { "logout": "asc auth logout --name personal", "use": "asc auth use personal" },
"isActive": false, "issuerID": "...", "keyID": "KEYID1", "name": "personal"
},
{
"affordances": { "logout": "asc auth logout --name work" },
"isActive": true, "issuerID": "...", "keyID": "KEYID2", "name": "work"
}
]
}
use — アクティブなアカウントを切り替える
asc auth use <name>
# → Switched to account "work"
<name> が存在しない場合は accountNotFound をスローします。有効な名前を確認するには、先に asc auth list を実行してください。
logout — アカウントを削除する
asc auth logout # removes the active account
asc auth logout --name work # removes a specific account
# → Logged out successfully
update — 既存のアカウントを変更する
asc auth update [--name <alias>] --vendor-number <number>
- 指定したアカウント(
--nameを省略した場合はアクティブなアカウント)を更新します - 現在は、
sales-reportsコマンドとfinance-reportsコマンドで使用されるベンダー番号--vendor-numberに対応しています - 既存の認証情報を読み込み、更新内容をマージして保存します
- アカウントが存在しない場合は
accountNotFoundをスローします
出力 — AuthStatus JSON(vendorNumber を含む):
{
"data": [{
"affordances": { "check": "asc auth check", "list": "asc auth list", ... },
"issuerID": "abc-def-456",
"keyID": "KEYID123",
"name": "work",
"source": "file",
"vendorNumber": "88012345"
}]
}
check — アクティブな認証情報を確認する
asc auth check [--pretty] [--output table]
アクティブなアカウント名とソース("file" または "environment")を表示します。保存されている場合は vendorNumber も表示します。環境変数の認証情報には name フィールドがありません。
認証情報の解決順序
すべての asc コマンドは、次の順序で認証情報を解決します。
~/.asc/credentials.json内のアクティブなアカウント(auth login/auth useで設定)- 環境変数:
ASC_KEY_ID、ASC_ISSUER_ID、ASC_PRIVATE_KEY_PATH/ASC_PRIVATE_KEY_B64/ASC_PRIVATE_KEY
認証情報ファイルの形式
{
"accounts": {
"personal": { "issuerID": "...", "keyID": "KEYID1", "privateKeyPEM": "..." },
"work": { "issuerID": "...", "keyID": "KEYID2", "privateKeyPEM": "...", "vendorNumber": "88012345" }
},
"active": "work"
}
vendorNumber フィールドは任意です。値が nil の場合、JSON から省略されます。--vendor-number が指定されていない場合に、sales-reports コマンドと finance-reports コマンドで自動解決するために使用されます。
レガシー形式からの移行:古い単一認証情報ファイル({ "keyID": ..., "issuerID": ..., "privateKeyPEM": ... })は、初回使用時に "default" という名前付きアカウントへ自動的に移行されます。
一般的なワークフロー
初回セットアップ(単一アカウント)
asc auth login \
--key-id KEYID123 \
--issuer-id abc-def-456 \
--private-key-path ~/.asc/AuthKey_KEYID123.p8
asc auth check --pretty # verify source: "file"
asc apps list # works without env vars
複数アカウント(個人用 + 仕事用)
# Add accounts
asc auth login --key-id K1 --issuer-id I1 --private-key-path ~/.asc/personal.p8 --name personal
asc auth login --key-id K2 --issuer-id I2 --private-key-path ~/.asc/work.p8 --name work
# List all
asc auth list --pretty
# Switch
asc auth use personal
asc apps list # now uses personal account
asc auth use work
asc apps list # now uses work account
レポート用にベンダー番号を保存する
# During login
asc auth login --key-id K1 --issuer-id I1 --private-key-path key.p8 --vendor-number 88012345
# Or add to existing account
asc auth update --vendor-number 88012345
# Now reports auto-resolve vendor number
asc sales-reports download --report-type SALES --sub-type SUMMARY --frequency DAILY
アカウントを削除する
asc auth list # find the name
asc auth logout --name personal
asc auth list # confirm removal
エラーリファレンス
| 状況 | 解決方法 |
|---|---|
accountNotFound("ghost") | 有効な名前を確認するには、asc auth list を実行してください |
| 名前にスペースが含まれている | ハイフンまたはアンダースコアを使用してください:--name my-org |
| API 呼び出しで 401 Unauthorized が発生する | アクティブな認証情報を確認するには、asc auth check を実行してください |
| 認証情報がどこにもない | asc auth login を実行するか、ASC_KEY_ID 環境変数を設定してください |