微信移动应用申请与云乐坊账号绑定
核验日期:2026-10-25。当前没有微信移动应用创建成功或提交审核的回执,微信 SDK 尚未接入。 本文用于管理员手动操作;微信开放平台表单尚未被读取,菜单名称、材料尺寸、主体资格及审核要求以当前页面为准。浏览器工具此前因站点安全策略拒绝访问该平台,本轮未绕过此限制。
先看当前状态
| 项目 | 已核验结果 |
|---|---|
| 原生 iOS 应用名称 | 云食册 - 食用手册,已通过 App Store Connect API 核对 |
| Bundle ID | fun.yunle.cook |
| Apple Team | QT792GAY4C |
| App Store Connect App ID | 6824589542;这是 Apple 的 ID,不是微信 AppID |
| App Store 版本 | 2.0.0,状态 PREPARE_FOR_SUBMISSION,尚未正式上架 |
| 云乐坊原生登录 | 系统授权窗口、回跳、会话恢复已在真机通过 |
| 头像与账号页 | 2.0.0 (6.4) 真机已显示头像和原生账号详情 |
| 公开隐私政策 | https://docs.cook.yunle.fun/privacy 已发布 2026-10-25 版,包含云乐坊账号、头像与微信登录状态说明 |
| 原生关联域名 | webcredentials 与微信 applinks 均已配置;6.6 已通过真机冷、热启动回跳,Apple CDN 部分节点仍超时 |
当前可以准备或保存申请资料,但不能把 Apple 草稿版本当作已上架证明,也不能把现有云乐坊 SSO 回调当作微信 Universal Links。
1. 使用正确的开放平台账号
- 在自己的浏览器登录微信开放平台,进入管理中心的应用列表。
- 先找到云乐坊网站现有微信登录所使用的网站应用,确认当前登录的是管理该应用的开放平台账号。
- 在这个账号下进入「移动应用」,先检查是否已有「云食册」及
fun.yunle.cook,避免重复创建。 - 没有时选择「创建移动应用」。本阶段只申请 iOS;不要为了填满表单填写虚构 Android 包名或签名。
- 主体名称、联系人、资质、备案等按本人或实际主体的真实材料填写。若页面要求开发者认证或不支持当前主体,先处理页面明确列出的条件,不把个人项目自动写成企业应用。
尽量与云乐坊网站应用处于同一个微信开放平台账号,方便后续核验微信跨应用身份。同一公司名称不代表两个开放平台账号的身份标识可以直接互用。
2. 填写应用资料
| 表单含义 | 可以填写的内容 |
|---|---|
| 应用名称 | 云食册 - 食用手册 |
| 简称 / App 内名称(若有) | 云食册 |
| 平台 | iOS |
| Bundle ID / Bundle Identifier | fun.yunle.cook |
| Apple App ID / App Store ID(若有此字段) | 6824589542 |
| 项目网站 | https://cook.yunyoujun.cn |
| 隐私政策 | https://docs.cook.yunle.fun/privacy(已发布账号登录说明) |
| 申请能力 | 微信登录 |
| 主体、联系人、电话、资质或备案 | 由管理员按实际资料填写,不复制示例或占位值 |
| 应用图标 | 使用下方现有 PNG,尺寸及文件大小按表单要求调整 |
| Universal Links | 见第 4 步;地址已部署,6.6 真机系统回跳通过 |
应用简介,可复制:
云食册是一款帮助用户根据已有食材和厨具查找菜谱的做菜应用,提供菜谱搜索、图文做法、收藏、私人菜谱、冰箱食材管理和到期提醒。基础做菜功能无需登录,用户可自愿登录云乐坊账号。
微信登录用途,可复制:
用户主动选择微信登录后,通过微信授权确认身份,并绑定或登录同一个云乐坊账号,用于用户身份认证和账号管理。首次使用且未建立绑定关系时,用户需先验证已有云乐坊账号后完成绑定。不读取微信聊天记录或通讯录,已有本机及 iCloud 做菜数据不会因登录自动上传或迁移。
图标源文件:apps/ios/Cook/Resources/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png(1024 × 1024)。不要把 1024 尺寸当作平台要求;以页面上传提示为准。需要演示材料时,截取 App 本身的做菜、冰箱及账号入口,避免把真实账号资料当作公开宣传截图。
3. 正确处理“下载地址 / 上线证明”
2026-10-25 实际回读的 App Store 版本状态为 PREPARE_FOR_SUBMISSION。目前不能声称 App 已在 App Store 上架。
- 如果页面提供“未上线 / 测试中”选项,可如实选择,并提交平台允许的材料。
- 如果允许未上架证明,按页面要求准备;App Store Connect 的应用信息及版本状态只能证明已建档,不能自动视为平台认可的上线证明。
- 如果必须提供可访问的 App Store 下载地址,且没有未上线申请入口,先处理正式上架,或向平台确认可接受的替代材料。
- 不把 App Store ID 拼出的地址、内部 TestFlight 构建或准备中的内测介绍页,冒充公开下载链接。
未上架情况说明,可按页面允许的用途使用:
云食册原生 iOS 应用已在 App Store Connect 建立应用记录,Apple App ID 为 6824589542,Bundle ID 为 fun.yunle.cook。当前版本 2.0.0 处于准备提交状态,尚未正式上架。原生应用已完成本机真机联调,现申请微信登录能力,以在能力开通后完成集成与授权回跳验证。请以平台认可的未上架材料要求审查。
4. 处理 iOS Universal Links
现有 webcredentials 用于云乐坊系统授权回跳;微信 SDK 的 Universal Links 还需要原生 App 的 applinks 关联。Apple 对两种服务有明确区分,详见 Associated Domains。
开放平台登记值如下,末尾 / 需要保留。站点与签名配置已部署,6.6 真机系统回跳通过;微信 SDK 尚未接入,不应写成已完成微信授权联调:
https://cook.yunyoujun.cn/auth/wechat/以下配置已于 2026-10-25 发布,后续维护时保持一致:
- 在现有 AASA 的
applinks.details中新增原生应用条目,保留已有webcredentials和旧 Capacitor 条目:
{
"appID": "QT792GAY4C.fun.yunle.cook",
"paths": ["/auth/wechat/*"]
}- 在原生 App 的 Associated Domains 中保留
webcredentials:cook.yunyoujun.cn,新增applinks:cook.yunyoujun.cn。不要改动原有 CloudKit 容器。 - 将更新后的完整 AASA 发布至
https://cook.yunyoujun.cn/.well-known/apple-app-site-association。站点实际由 EdgeOne 项目yunyoujun-cook托管,发布时保留完整站点内容。 - 核验 HTTPS、无重定向、JSON 内容以及 Apple CDN 中的原生应用条目;重新签名并安装含新增权限的 App。
- 后续平台登记、SDK 注册和客户端处理使用同一前缀。取得微信 AppID 并接入 SDK 后,完成真机“云食册 → 微信 → 云食册”授权测试。
发布记录:PR #151 已合入主线;EdgeOne 生产部署 dpbe84c98zk4 的 AASA 和回跳兜底页均为 HTTPS 200、无重定向。Release 2.0.0 (6.6) 的签名包含两类 Associated Domains,保留 iCloud Production,并已安装到 iPhone 15 Pro。补上 SwiftUI .onOpenURL 接收入口后,从备忘录点击链接的热启动、冷启动均直接进入云食册「我的」,既有会话恢复正常。Apple 海外 CDN 节点返回正确 AASA,部分国内节点仍返回 SWCERR00301 Timeout,不能将单台设备成功等同于所有地区已生效。详见发布与验证记录。
若申请表要求微信 SDK 自检或实际微信授权测试,仍需在取得 AppID 并集成 SDK 后完成。https://cook.yunyoujun.cn/auth/callback?platform=native 是现有云乐坊 SSO 回调,不能直接拿来替代。
5. 补齐隐私政策后提交
- 原生云乐坊登录、头像、账号注销、iCloud 边界和微信 SDK 尚未启用的说明已发布到正式隐私政策,更新日期为 2026-10-25。
- 微信 SDK 实际接入时,再按选定 SDK 版本补充提供者、使用目的、实际处理的数据及官方隐私说明链接,不提前声称尚未发生的数据处理已经启用。
- 打开正式隐私政策 URL,确认显示的是待审核应用实际使用的内容。
- 回到平台逐项检查应用名称、Bundle ID、主体、图标、下载或未上架材料、Universal Links。
- 阅读页面协议与承诺,由管理员本人确认并提交。
- 保存申请回执或审核状态。应用创建成功、应用审核通过、微信登录权限已开通是不同状态;如果页面要求单独申请微信登录,继续进入相应能力页完成申请。
- 驳回时按具体原因修改,不重复创建新应用。
6. 先把你的微信绑定到现有云乐坊账号
这一步可先在云乐坊网站操作,不需要等待原生 SDK 集成:
- 使用已有账号方式登录云乐坊,确认是当前的「云游君 / @yunyoujun」。
- 打开
https://www.yunle.fun/settings?tab=security。 - 在「安全设置 → 第三方账号 → 微信」点击「绑定」,本人完成微信授权。
- 返回后确认显示“已绑定”。如果已经绑定,就保持现状;如果微信被其他账号占用,先处理归属冲突。
源代码已核对:该入口使用 CloudBase 的绑定流程 type: bind_identity,目标是当前用户。不要用“退出后直接点微信登录”的方式来代替首次绑定;首次绑定需要证明两个身份都由同一用户控制。CloudBase 支持为已有用户关联其他登录方式,见账户关联登录。
网站绑定完成并不意味着原生微信登录已经接通;原生应用还需完成下一步的服务端身份对应和 SDK 接入。
7. 原生接入必须保持同一个云乐坊用户 ID
这是后续实现与验收约定,当前尚未实现原生微信登录:
| 微信身份状态 | 预期行为 |
|---|---|
| 已经对应某个云乐坊用户 | 登录该已有用户,保持同一 CloudBase 用户 ID |
| 尚未绑定 | 引导验证已有云乐坊账号,再建立绑定;本期不静默创建第二个云乐坊账号 |
| 已绑定到另一个云乐坊用户 | 显示冲突,由用户处理;不自动合并账号 |
| 取消或授权失败 | 保留原登录状态,不写入绑定关系 |
服务端验证微信授权码和实际返回的身份,不能信任客户端传来的用户 ID、openid 或 unionid。UnionID 可用于经核验的跨应用身份对应,但不能假设必然存在或自动完成绑定;昵称、头像相同不能作为合并依据。
现有 CloudBase wx_open 用于网站微信登录。不要把移动应用 AppID / AppSecret 直接覆盖到这份网站配置中。 接入时核验当前 CloudBase 对移动身份源的支持方式,使用独立的移动配置或受控服务端适配,再登录已绑定的同一 CloudBase 用户。AppSecret 只存受控服务端,不进入 iOS 工程、公开仓库、URL、截图或聊天。
验收需要比较同一个用户 ID,不能只看昵称:
- 先用云乐坊方式登录,记录测试账号身份;退出后用微信登录仍进入同一身份。
- 重启后会话恢复;取消授权不会误登录;冲突不会覆盖别人的绑定。
- 云乐坊账号的资料及权益仍属于原用户。
- 收藏、偏好、冰箱与私人菜谱继续由原来的本机 / iCloud 管理,不因微信登录迁移或删除。
8. 操作后保留这些信息
可以回传以下不含密钥的信息,以继续配置和联调:
应用名称:
微信移动应用 AppID:
是否与云乐坊网站应用位于同一开放平台账号:
应用审核状态:
微信登录权限状态:
平台登记的 iOS Bundle ID:
平台登记的 Universal Links:
若被驳回,完整驳回原因:不要发送 AppSecret、密码、短信验证码、扫码登录凭证或完整主体证件。平台需要的主体与联系资料直接提交到平台。
原生云乐坊账号实现记录见原生 iOS 云乐坊账号。