App Store Connect API 密钥让 LingCode Agent 能够上传构建、管理 TestFlight 并查看 Provisioning 数据,无需每次重新输入 Apple ID 密码。一次生成,一次注册,之后无需再操心。
与 App Store Connect 的每一次交互——上传构建、列出你的 App、邀请 TestFlight 测试人员——最终都需要身份验证。Apple 以前的方案是 Apple ID 密码加上双重验证码,而且 Session 过期速度快得让自动化几乎无从实现。2019 年推出的新方案是 App Store Connect API:每次调用都用 Apple 颁发给你的私钥签署一个短期 JWT,权限范围由你选择的角色决定,随时可以撤销。
LingCode Agent 要代你上传构建,就需要这个私钥。没有捷径——Apple 刻意不允许通过程序创建密钥,因为密钥本身就是凭据。不过一旦生成过一次,最难的部分就永远完成了。密钥保存在你的 macOS Keychain 中,后续所有涉及 App Store Connect 的 Agent 操作——TestFlight 上传、App Store 元数据,以及未来更多功能——都会透明地使用它。
本教程介绍这一次性配置过程:如何选择角色(尽量缩小影响范围很重要)、如何下载 .p8 文件(只有一次机会),以及如何将三个值注册到 LingCode。完成后,TestFlight 上传教程是顺理成章的下一步。
.p8 文件(一次性操作,请勿丢失).p8 注册到 LingCode登录 appstoreconnect.apple.com。点击顶部导航栏中的用户和访问,再点击侧边栏中的集成,然后依次选择 App Store Connect API 和 Team Keys 标签页。
是的,需要点击四次才能到达。Apple 把这个页面藏得很深——到达后记得收藏最终 URL。
点击 Generate API Key,给它起一个便于识别的名称(例如"LingCode TestFlight"),并选择角色。
如果目标是"在对话中发布到 TestFlight",App Manager 是最合适的最低权限:足以上传和管理 TestFlight,但无法删除 App 或更改团队成员。不要为 Agent 持有的密钥使用 Admin 或 Account Holder 角色——尽量缩小潜在的影响范围。
点击 Generate,Apple 会创建该密钥。
Apple 会在新密钥旁边显示 Download API Key 按钮。立刻点击下载。这是一次性下载——一旦离开当前页面,Apple 就不会再允许你下载这个 .p8 文件。届时只能撤销并重新生成。
文件名为 AuthKey_<KeyID>.p8。将其存放在下一步能找到的位置(放在"下载"文件夹即可——注册完成后可以删除)。
注册密钥需要以下三项信息:
69a6de70-...),每个团队唯一。ABC1234DEF),每个密钥唯一。.p8 文件 — 即第 3 步下载的文件。打开 LingCode 中的 AI 对话面板,输入:
Save my App Store Connect API key. Issuer ID: <value>. Key ID: <value>. The .p8 is at /Users/<you>/Downloads/AuthKey_<keyid>.p8.
Agent 会调用内部的 set_asc_api_key 工具。.p8 的内容(而非文件路径)以及两个 ID 会保存到你的 macOS Keychain 中,服务名为 LingCode。之后可以从"下载"文件夹删除该文件——LingCode 已保存了自己的副本。
在对话中输入:Is my ASC API key set up?
Agent 会检查 Keychain 并返回结果,例如:"是的,Issuer ID 末尾为 ...abc,Key ID 为 ABC1234DEF",或"未找到已配置的 ASC 密钥"。它不会打印完整的 Issuer ID 或 .p8 内容,只显示足以确认你注册了正确密钥的信息。
如果创建该密钥的成员离开了团队,或者你怀疑密钥已泄露,请立即撤销。在 App Store Connect → Team Keys 中,点击密钥旁边的 Revoke。Apple 会立即使其失效,后续所有 API 调用都将失败。
生成新密钥后,通过相同的对话命令重新注册到 LingCode。旧的 Keychain 条目会被干净地覆盖。