# 0009. 免登复用扫码登录端点,不新增独立 SSO 端点 状态: 已接受 钉钉"免登"指用户在浏览器侧已登录钉钉后访问 CRM,前端重定向到钉钉 OAuth 授权页,钉钉检测到已登录态后自动重定向回 CRM 并携带 authCode。需要确定后端是否为免登新增独立端点。 ## 决策 免登复用现有 `POST /api/auth/login/dingtalk` 端点,不新增独立的 SSO 端点。两种场景(扫码登录 / OAuth 重定向免登)的 authCode 均通过钉钉 `oauth2/userAccessToken` API 换取用户级 accessToken,后端处理逻辑完全一致,不需要区分来源。 ## 考虑过的替代 - 新增 `POST /api/auth/login/dingtalk/sso` 独立端点——被否,逻辑与扫码登录完全相同,多出的端点只在日志/埋点上区分来源,代价大于收益。 - 新增 JS-SDK 签名端点支持钉钉客户端内免登——被否,用户选择浏览器 OAuth 重定向方案,不需要 JS-SDK(dd.config 鉴权),后端无需新增 jsapi ticket 签名能力。 ## 后果 前端自行管理 OAuth 重定向 URL 和 clientId(clientId 是公开值);后端零改动。若后续需要支持钉钉桌面客户端内 H5 免登(JS-SDK `requestAuthCode`),则需新增 JS-SDK 签名端点(获取 jsapi ticket + SHA1 签名 + 返回 corpId/agentId/nonce/timestamp),届时另起 ADR。