WinCode
Enterprise

企业微信认证

企业微信扫码登录、账号绑定与登出流程。

企业微信认证

WinCode 通过企业微信 OAuth 提供可选的扫码登录。登录并非强制要求——未登录的用户依然可以打开应用并使用本地聊天;但登录后,云端配置同步、设备上报、部门个性化配置等能力都会随之开启。

企业微信认证对话框

登录流程

WinCode 的认证模块采用"OAuth + JWT 交换"的两段式设计。前端通过 authLogin() 调用 Tauri 后端的 auth_login 命令,后端打开系统浏览器跳转到企业微信的扫码页面,并返回本次登录的 LoginStartInfo。用户在企业微信侧确认后,企业微信会把 OAuth code 回调到预先配置的互联网域名。

后端拿到回调后,使用 authCompleteLogin(code) 或针对企业微信直接走 authCompleteEnterpriseLogin(userInfo) 完成登录,返回 AuthStatus。整个过程中,敏感的 corpSecret 都保留在后端,前端只能拿到 UserInfo 与令牌状态。

┌──────────────┐  auth_login   ┌──────────────┐
│ 前端 auth.ts │─────────────▶│ Rust 后端    │──▶ 打开系统浏览器
└──────┬───────┘               └──────┬───────┘
       │                              │
       │  auth_complete_enterprise_login
       │─────────────────────────────▶│──▶ 持久化到 auth_session 表
       │                              │──▶ 发出 auth:state-changed 事件
       │                              │──▶ 触发强制云配置同步
       ▼                              ▼

状态监听

登录状态通过 onAuthStateChanged(handler) 订阅,后端在状态变化时会推送 auth:state-changed 事件。前端在 authStore 中集中管理 AuthStatus,应用启动时通过 authStatus()authGetUser() 恢复本地已存储的登录态,实现重启后免登。

登出

authLogout() 调用后端 auth_logout 命令,清除 auth_session 表中保存的用户信息,并再次发出 auth:state-changed 事件。登出后云端同步会暂停,但本地聊天和 MCP 功能仍然可用。

私有部署注意事项

如果是私有部署的 WinCode 实例,需要关注两点:

  1. 企业微信的 corpIdagentId 由部署方在构建或运行配置中指定。
  2. 回调域名需要能被企业微信开放平台访问,不能是公司内网域名。

相关文档

On this page