Files
dsh_ai1net_server/docs/交接单/接续入口_官方账号登录_20260927.md
T
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次)
- .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…),
  目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪
- .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/)
- .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*)
- .gitignore 补:备份件(*.bak-*)
- 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

4.3 KiB
Raw Blame History

接续入口 — 官方账号登录(手机连桌面端)· 2026-09-27

一句话(当前实况,2026-09-27 第 112 轮)

代码层已全部完成并验证;只剩两步需要人在机器前做:① 重启桌面客户端(新面板入口与 /oauth/* 生效)② 在官方页面点批准。在那之前,"官方账号"这条链不算端到端通。

已完成(含证据,⛔ 别重做)

  1. 死结已定:官方 OAuth 只接受回环回调(http://127.0.0.1:PORT/…、http://localhost:PORT/… 通过;公网域名与官方自身 origin 均被 code:50005 PAYLOAD_SCHEMA_MISMATCH 拒)⇒ 服务器与手机浏览器都当不了官方客户端,只能由桌面端做。详见 官方账号登录_死结与结论_20260927.md。
  2. 平台侧三跳已上生产(D:\github\dsh_shenxian,线上 md5 f0490dc44ec8f9ba3d5c9d0605bf886f 与本地一致):
    • POST /api/dsh-oauth/begin(收 {redirectUri,state[,pairCode]} ⇒ 回 {authorizeUrl};只放行回环;PKCE verifier 留服务端)
    • POST /api/dsh-oauth/complete(校 state 单次有效 ⇒ 用服务端 verifier 调官方 auth_exchange ⇒ 官方身份转平台账号:identityKeyOf→platformUsernameOf→查或建 role='pending' ⇒ 带 pairCode 时内部调既有 /api/overlay/pair/approve 完成绑定)
    • 夹具 test/dsh-oauth.test.mjs(8/8 绿:公网拒/缺参拒/回环起授权且不回显 PKCE 私料/陌生 state 拒/换码拿身份且不许重放/官方 biz_code≠0 不回原文/带码绑定成功 pairBound/带码绑定失败 409 不夹带凭据);与 test/dsh-account-login.test.mjs(10 例)均已挂进 npm test。
  3. 桌面端已落地并接入(E:\github\dsh-client\packages\device-shim):
    • lib/oauth-dsh.js:GET /oauth/dsh/start(请平台起授权并 302)+ GET /oauth/callback(校 state、收码、把 {code,state,redirectUri[,pairCode]} 交平台);接入点 lib/index.js:52/297。
    • lib/pair-page.js:面板新增「用 DSH 官方账号绑定」入口,出码后自动带上本次 pairCode。
    • src/index.ts:设计说明已同步(本仓 lib/src 手工同步约定)。
  4. 可复跑的验证脚本(全部 rc=0):
    • 桌面端两路由冒烟 E:\ProgramDSH\.dsh\temp\joint\oauth-dsh-smoke.mjs ⇒ 9/9
    • 真网络打生产 …\oauth-dsh-realchain.mjs ⇒ 302 到官方授权页并回真 authorize_id
    • 面板渲染 …\pair-panel-render-check.mjs ⇒ 7/7(含新入口、原型令牌在、无自造色板)
    • 平台侧 npm run build && node --test test/dsh-oauth.test.mjs test/dsh-account-login.test.mjs ⇒ 16/16
    • 共存门禁(…\.workbuddy\_devkit):登记控制台 30/0、设备通道 15/0
  5. 回滚点:平台 /opt/dsh/backups/dsh-oauth-bind-1606/(上一版可执行回退:原样拷回 + 重启 dshs);插件侧未 commit ⇒ git 工作区回退。

只剩这两步(需要人操作)

  1. 重启桌面客户端(或在「设置 → 插件」把 device-shim 关掉再开)⇒ 面板入口与 /oauth/* 两条路由生效。
  2. 设置里打开「扫码配对」→ 出码 → 点「用 DSH 官方账号绑定」→ 在官方页面点批准 ⇒ 面板应显示「已绑定」。 随后复核两条验收:凭据四件与登记控制台产物同形 + 中继里该 uid 设备 online=true 且端口含 20090。

当前可用状态(不受上面阻塞)

门户账号那条路全通:面板出码 → 平台 pending_scan → 手机登录门户确认 → 桌面落凭据 → 中继在线。想先用它把手机连上,随时可以。

⛔ 不要重做 / 不要再走

① 别再把官方登录入口挂到门户登录页(浏览器里必然失败,已因此回退)② 别再验"公网回调能否通过"(已证被 code:50005 拒)③ 别改官方主程序 E:\github\dsh-desktop-0.1.7rc2 ④ 别重写平台侧 dsh-account.ts 与已完成的 dsh-oauth.ts ⑤ 别按 email 认领既有平台账号(dsh-account.ts:38-47 已判死)⑥ 别动后台作业 pwsh-470(测试身份设备守护)⑦ ⛔ 本阶段线已收口,不需要再改插件侧。