mcpField
A
asc-auth

asc-auth

github.com/tddworks开发587 次安装6 周前更新
代码仓库

关于 asc-auth

用于 App Store Connect 的命令行认证管理工具,可保存多个命名账户,并为 `asc` 命令选择活动账户。它还支持报表所需的供应商编号,并可回退到环境变量凭证。

主要功能

  1. 01保存多个命名账户
  2. 02切换活动账户
  3. 03列出、检查、更新或移除凭证
  4. 04从文件或环境变量解析凭证
  5. 05为报表保存供应商编号
  6. 06迁移旧版单账户文件

适用场景

  1. 01设置个人和工作账户
  2. 02为 `asc` 命令切换账户
  3. 03验证当前活动凭证
  4. 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 命令按以下顺序解析凭据:

  1. ~/.asc/credentials.json 中的活动账户(由 auth login / auth use 设置)
  2. 环境变量: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