关于 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,而不是--private-key-path --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,则更新活动账户) - 目前支持
--vendor-number,即sales-reports和finance-reports命令使用的供应商编号 - 加载现有凭据,合并更新内容,然后保存
- 如果账户不存在,则抛出
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 环境变量 |
评论
支持 Markdown