refactor: 只保留 Web,移除 Capacitor 原生壳
删除 android/、ios/ 两个 Capacitor 原生工程与 capacitor.config.ts、 ionic.config.json,以及 scripts/android、scripts/ios.sh 构建脚本; 根与 apps/web 的 @capacitor/* 依赖和相关 npm scripts 一并移除。 Web 侧去掉原生分支:登录只走云乐坊容器授权面板或顶层重定向, 暗色模式不再改原生状态栏,移除 Android 物理返回键处理。 保留 @nuxtjs/ionic(Web UI 框架)、云乐坊 window.ylf 桥接与 PWA。 决策记录见 docs/decisions/0004-web-only.md。
This commit is contained in:
+17
-26
@@ -1,33 +1,24 @@
|
||||
# APP
|
||||
# Web 应用
|
||||
|
||||
考虑到跨平台和开发效率,计划使用:
|
||||
Cook 只保留 Web 一套代码,服务普通浏览器和云乐坊容器。技术栈:
|
||||
|
||||
- [Capacitor](https://capacitorjs.com/)
|
||||
- [Ionic](https://ionicframework.com/)
|
||||
- [Nuxt Ionic](https://ionic.nuxtjs.org/)
|
||||
- [Nuxt 4](https://nuxt.com/)(Vue 3,CSR-only,静态生成)
|
||||
- [Ionic](https://ionicframework.com/) + [Nuxt Ionic](https://ionic.nuxtjs.org/)(Web UI 框架,与 Capacitor 无关)
|
||||
- [UnoCSS](https://unocss.dev/) 原子化样式
|
||||
|
||||
## 云乐坊 SSO 回调
|
||||
原生 App(iOS / Android)的代码已随 [0004 只保留 Web,移除 Capacitor 原生壳](/decisions/0004-web-only) 一并移除。
|
||||
|
||||
移动端使用系统浏览器打开云乐坊授权页,并通过已验证的 HTTPS Universal Links / App Links
|
||||
返回 `https://cook.yunyoujun.cn/auth/callback?platform=native`。不要改用自定义 URL Scheme;
|
||||
PKCE 能阻止授权码被旁路窃取,但不能阻止恶意 App 主动冒充公开客户端发起授权。
|
||||
## 云乐坊 SSO
|
||||
|
||||
iOS 的 Associated Domains 与站点 `apple-app-site-association` 已纳入项目。Android 上架前还需用
|
||||
Google Play App Signing 的发布证书 SHA-256 生成站点文件
|
||||
`apps/web/public/.well-known/assetlinks.json`,关系必须限定为:
|
||||
Web 端有两种登录路径:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"relation": ["delegate_permission/common.handle_all_urls"],
|
||||
"target": {
|
||||
"namespace": "android_app",
|
||||
"package_name": "cn.yunyoujun.cook",
|
||||
"sha256_cert_fingerprints": ["<PLAY_APP_SIGNING_SHA256>"]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
- **在云乐坊 App 容器内**:通过宿主注入的 `window.ylf` JSAPI 直接请求宿主授权面板,用户不离开当前页面。
|
||||
- **在普通浏览器中**:走顶层重定向到云乐坊授权页,授权完成后回到
|
||||
`https://cook.yunyoujun.cn/auth/callback`,由该页面换回登录票据。
|
||||
|
||||
不要把本机 debug keystore 指纹发布到生产站点。完成证书配置后,需在真机验证已登录快捷授权、
|
||||
显式同意、取消、返回键、超时、伪造回调和授权码重放。
|
||||
回跳地址必须是已在云乐坊登记的 HTTPS 地址,且不能带 `?platform=native` 之类的原生标记。
|
||||
PKCE 能阻止授权码被旁路窃取,但不能阻止恶意客户端主动冒充公开客户端发起授权,
|
||||
因此不要放宽回跳地址的登记要求。
|
||||
|
||||
回跳域名有多个时(`cook.yunyoujun.cn`、`cook.yunle.fun`),按当前页面 origin 选对应的那个,
|
||||
`yunlefunSsoRedirectUris` 里没登记的域名会直接判定为配置错误并拒绝登录。
|
||||
|
||||
Reference in New Issue
Block a user