跳至内容

微信移动应用申请与云乐坊账号绑定 ​

核验日期:2026-10-25。当前没有微信移动应用创建成功或提交审核的回执,微信 SDK 尚未接入。 本文用于管理员手动操作;微信开放平台表单尚未被读取,菜单名称、材料尺寸、主体资格及审核要求以当前页面为准。浏览器工具此前因站点安全策略拒绝访问该平台,本轮未绕过此限制。

先看当前状态 ​

项目已核验结果
原生 iOS 应用名称云食册 - 食用手册,已通过 App Store Connect API 核对
Bundle IDfun.yunle.cook
Apple TeamQT792GAY4C
App Store Connect App ID6824589542;这是 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. 使用正确的开放平台账号 ​

  1. 在自己的浏览器登录微信开放平台,进入管理中心的应用列表。
  2. 先找到云乐坊网站现有微信登录所使用的网站应用,确认当前登录的是管理该应用的开放平台账号。
  3. 在这个账号下进入「移动应用」,先检查是否已有「云食册」及 fun.yunle.cook,避免重复创建。
  4. 没有时选择「创建移动应用」。本阶段只申请 iOS;不要为了填满表单填写虚构 Android 包名或签名。
  5. 主体名称、联系人、资质、备案等按本人或实际主体的真实材料填写。若页面要求开发者认证或不支持当前主体,先处理页面明确列出的条件,不把个人项目自动写成企业应用。

尽量与云乐坊网站应用处于同一个微信开放平台账号,方便后续核验微信跨应用身份。同一公司名称不代表两个开放平台账号的身份标识可以直接互用。

2. 填写应用资料 ​

表单含义可以填写的内容
应用名称云食册 - 食用手册
简称 / App 内名称(若有)云食册
平台iOS
Bundle ID / Bundle Identifierfun.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 处于准备提交状态,尚未正式上架。原生应用已完成本机真机联调,现申请微信登录能力,以在能力开通后完成集成与授权回跳验证。请以平台认可的未上架材料要求审查。

现有 webcredentials 用于云乐坊系统授权回跳;微信 SDK 的 Universal Links 还需要原生 App 的 applinks 关联。Apple 对两种服务有明确区分,详见 Associated Domains。

开放平台登记值如下,末尾 / 需要保留。站点与签名配置已部署,6.6 真机系统回跳通过;微信 SDK 尚未接入,不应写成已完成微信授权联调:

text
https://cook.yunyoujun.cn/auth/wechat/

以下配置已于 2026-10-25 发布,后续维护时保持一致:

  1. 在现有 AASA 的 applinks.details 中新增原生应用条目,保留已有 webcredentials 和旧 Capacitor 条目:
json
{
  "appID": "QT792GAY4C.fun.yunle.cook",
  "paths": ["/auth/wechat/*"]
}
  1. 在原生 App 的 Associated Domains 中保留 webcredentials:cook.yunyoujun.cn,新增 applinks:cook.yunyoujun.cn。不要改动原有 CloudKit 容器。
  2. 将更新后的完整 AASA 发布至 https://cook.yunyoujun.cn/.well-known/apple-app-site-association。站点实际由 EdgeOne 项目 yunyoujun-cook 托管,发布时保留完整站点内容。
  3. 核验 HTTPS、无重定向、JSON 内容以及 Apple CDN 中的原生应用条目;重新签名并安装含新增权限的 App。
  4. 后续平台登记、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. 补齐隐私政策后提交 ​

  1. 原生云乐坊登录、头像、账号注销、iCloud 边界和微信 SDK 尚未启用的说明已发布到正式隐私政策,更新日期为 2026-10-25。
  2. 微信 SDK 实际接入时,再按选定 SDK 版本补充提供者、使用目的、实际处理的数据及官方隐私说明链接,不提前声称尚未发生的数据处理已经启用。
  3. 打开正式隐私政策 URL,确认显示的是待审核应用实际使用的内容。
  4. 回到平台逐项检查应用名称、Bundle ID、主体、图标、下载或未上架材料、Universal Links。
  5. 阅读页面协议与承诺,由管理员本人确认并提交。
  6. 保存申请回执或审核状态。应用创建成功、应用审核通过、微信登录权限已开通是不同状态;如果页面要求单独申请微信登录,继续进入相应能力页完成申请。
  7. 驳回时按具体原因修改,不重复创建新应用。

6. 先把你的微信绑定到现有云乐坊账号 ​

这一步可先在云乐坊网站操作,不需要等待原生 SDK 集成:

  1. 使用已有账号方式登录云乐坊,确认是当前的「云游君 / @yunyoujun」。
  2. 打开 https://www.yunle.fun/settings?tab=security。
  3. 在「安全设置 → 第三方账号 → 微信」点击「绑定」,本人完成微信授权。
  4. 返回后确认显示“已绑定”。如果已经绑定,就保持现状;如果微信被其他账号占用,先处理归属冲突。

源代码已核对:该入口使用 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. 操作后保留这些信息 ​

可以回传以下不含密钥的信息,以继续配置和联调:

text
应用名称:
微信移动应用 AppID:
是否与云乐坊网站应用位于同一开放平台账号:
应用审核状态:
微信登录权限状态:
平台登记的 iOS Bundle ID:
平台登记的 Universal Links:
若被驳回,完整驳回原因:

不要发送 AppSecret、密码、短信验证码、扫码登录凭证或完整主体证件。平台需要的主体与联系资料直接提交到平台。

原生云乐坊账号实现记录见原生 iOS 云乐坊账号。