连接你的 App Store 与 Google Play 账号。
你需要准备什么
Mokbi 永远不会看到你的商店密码。你只需为每个商店创建一个权限受限的密钥,粘贴一次即可。密钥会先与商店核实身份,再加密保存,你可以随时断开连接。
- Google Play:一个 Google Cloud service account 密钥,以 JSON 文件形式下载,来自已启用 Google Play Android Developer API 的项目,并且该 service account 已被邀请加入你的 Play Console。
- App Store Connect:一个 API 密钥,以
.p8文件形式下载,还包括对应的 Key ID 和你所在团队的 Issuer ID。
每个商店只需设置一次。之后无论是首次发布还是重新发布,都只需点一下。建议先做 Google,它的环节更多。
Google Play 第 1 部分:创建 service account 密钥
这一步在 Google Cloud Console(console.cloud.google.com)中完成。
- 创建或选择一个项目,例如 "Mokbi Publisher"。
- 进入 APIs & Services → Library,搜索 Google Play Android Developer API,点击 Enable。
- 进入 APIs & Services → Credentials → Create credentials → Service account。给它起个名字,比如
mokbi-play-publisher。项目 roles 可以留空,真正的权限会在第 2 部分的 Play Console 中设置。 - 打开该 service account,进入 Keys 标签页,然后依次选择 Add key → Create new key → JSON,下载文件。这个 JSON 文件就是你要粘贴进 Mokbi 的内容。文件里的
client_email(以.iam.gserviceaccount.com结尾)就是你在下一步要邀请的地址,先记下来备用。
遇到了 "Service account key creation is disabled"?这是一条 Google 组织策略,名为 iam.disableServiceAccountKeyCreation,在 "Secure by Default" 下默认开启。为这个项目关闭它:进入 IAM & Admin → Organization Policies,找到 Disable service account key creation,选择 Manage policy,选中 "Override parent's policy",将 Enforcement: Off 的范围限定为该项目,然后点 Save。等几分钟后再试一次密钥。这需要 Organization Policy Administrator 角色,组织所有者拥有此角色,也可以授予给你。
Google Play 第 2 部分:在 Play Console 中授予权限
这一步最容易让人白白耗费好几个小时,请务必仔细阅读。对应用的访问权限只能在 Google Play Console(play.google.com/console)中授予,Google Cloud IAM 里永远做不到。需要检查两个地方:
- Setup → API access:确认持有你 service account 的 Google Cloud 项目已在此处关联。没有关联的话,密钥虽然能完成身份验证,但会在每个应用上返回 403。
- Users and permissions(左侧栏底部,账号级别):选择 Invite new users,粘贴 service account 的邮箱(以
.iam.gserviceaccount.com结尾的那个),然后在 App permissions 下添加你的应用,并至少授予 Manage store presence 权限。仅这一项应用级权限,就足以发布商店文本和截图,不需要账号级别的 Admin。
你的应用必须已经存在于 Play Console 中。用于发布的 API 只编辑已有的 package,不会创建新应用,此时也不需要上传任何 APK 或 AAB。请确保你在 Mokbi 中填写的 package name 与该应用完全一致。
头号坑:Cloud IAM 不是 Play Console
如果你一直遇到 PERMISSION_DENIED,原因几乎总是这一个。Google Cloud IAM(Cloud Console 中的 IAM & Admin → IAM 页面,在这里给 service account 分配 "roles")控制的是对 Google Cloud 资源的访问权限,对你应用的商店列表访问权限毫无作用。在这里分配角色永远解决不了商店权限错误。
应用的访问权限完全由 Play Console 决定,就在上面提到的那两个地方:API access 的关联,以及 Users and permissions 里的邀请。把这两处设置好,之前返回 403 的同一把密钥就能开始正常工作。
Apple:创建 App Store Connect API 密钥
这一步在 App Store Connect(appstoreconnect.apple.com)中完成。Mokbi 需要三样东西:.p8 文件的内容、Key ID 和 Issuer ID。
- 进入 Users and Access → Integrations → App Store Connect API。这个部分只有团队的 Account Holder 或 Admin 能看到。如果系统询问,允许使用 team keys。
- 点击 Generate API Key,给它起个名字(例如 "Mokbi Publisher"),并赋予 App Manager 角色。
- 下载 .p8 文件。这个文件只能下载一次,务必妥善保存。记下密钥旁显示的 Key ID,以及 Keys 页面顶部的 Issuer ID(一串 UUID)。
和 Google 一样,应用必须已经存在于 App Store Connect 中。这个 API 只编辑已有的商店列表,不需要上传任何 build。用 Mokbi 发布时会为你准备好版本,并在提交审核之前停下,准备好后由你自己在 App Store Connect 中点击 Submit。
在 Mokbi 中完成连接
打开一个项目,进入 发布 步骤,使用连接按钮:
- 连接 Google Play:粘贴完整的 service account JSON,然后点击 验证并连接。发布前先填写 package name 并运行 测试连接。
- 连接 App Store Connect:用文本编辑器打开
.p8文件并粘贴其内容,填写 Key ID 和 Issuer ID,然后点击 验证并连接。
每把密钥在保存前都会先与商店核实,之后加密保存在我们的密钥库中,你可以随时用 断开连接 断开连接。
常见问题与解决办法
"Service account key creation is disabled." 组织策略正在阻止 JSON 密钥。为该项目关闭 iam.disableServiceAccountKeyCreation(参见 Google Play 第 1 部分),等两分钟后重试。
每个应用都返回 PERMISSION_DENIED 或 403。权限没有在 Play Console 中设置好。请确认 Cloud 项目已在 Setup → API access 下关联,并且 service account 的邮箱已在 Users and permissions 下被邀请,且已对你的应用授予 Manage store presence 权限。Cloud IAM 里的 roles 不算数。
刚授予权限后仍然失败。权限变更需要几分钟才能生效。在 Play Console 中重新保存一次权限(打开后再保存一次),或者稍等片刻,再运行一次 测试连接。作为快速排查手段,临时给 service account 授予账号级别的 Admin,如果这样就能让 测试连接 通过,说明之前的问题出在应用级权限范围或项目关联上。
应用不对,或者没有任何反应。Mokbi 中的 package name 必须与 Play Console 里的应用完全一致,并且该应用必须已经存在于两个控制台中。用于发布的 API 只编辑已有应用,永远不会创建新应用。
.p8 文件丢了。Apple 只允许下载一次。如果文件不见了,就在 App Store Connect 中吊销该密钥,生成一个新的,然后在 Mokbi 中重新连接。