IM 工作台免密登录

配置钉钉、企业微信、飞书工作台免密登录,让企业成员在 IM 客户端内一键访问 Knodo

IM 工作台免密登录

企业成员在钉钉、企业微信、飞书的工作台中打开 Knodo 时,可以自动完成身份认证,无需手动输入账号密码或扫码。本文介绍如何在各 IM 平台的开放平台中配置应用,以启用工作台免密登录。

前提条件

  • 拥有对应 IM 平台的企业管理员权限
  • 已在 IM 开放平台创建企业自建应用
  • Knodo 实例已部署并可从公网访问

核心原理

工作台免密登录的核心在于 $CORPID$ 占位符机制

  1. 在 IM 开放平台配置应用首页地址时,在 URL 中加入 ?corpId=$CORPID$ 参数
  2. 当企业成员从工作台打开应用时,IM 客户端会自动将 $CORPID$ 替换为当前企业的真实 corpId
  3. Knodo 前端从 URL 参数中读取 corpId,结合 IM 平台的 JS-SDK 完成自动免密登录
  4. 登录完成后,系统根据 corpId 自动将用户加入对应的企业组织

钉钉

1. 进入应用管理

登录 钉钉开放平台,进入您的企业自建应用。

2. 配置网页应用地址

在左侧菜单选择 应用能力 > 网页应用,编辑网页应用配置:

  • PC 端首页地址https://knodo.vip/bots?corpId=$CORPID$
  • 移动端首页地址https://knodo.vip/workspaces?corpId=$CORPID$

钉钉网页应用配置

3. 开通应用权限

在左侧菜单选择 权限管理,确保以下权限已申请并授权:

权限名称用途
通讯录个人信息读权限读取用户姓名、头像等基本信息
邮箱等个人信息读取用户个人邮箱和企业邮箱
通讯录部门信息读权限获取部门列表用于用户同步
成员信息读权限读取部门成员列表
通讯录部门成员读权限读取部门下的用户信息
通讯录组织基础信息读权限获取企业基本信息
企业内机器人发送消息权限Bot 机器人推送消息
获取钉钉开放接口用户访问凭证的基础权限OAuth 登录流程
企业微应用后台免登接口的访问权限JSAPI 免密登录

以上权限为免密登录和用户同步的必要权限,缺少任一权限可能导致登录失败或用户信息不完整(如邮箱为空)。

4. corpId 获取方式

钉钉支持两种方式获取企业 corpId:

方式说明优先级
dd.corpIdH5 微应用运行时由钉钉客户端注入
URL $CORPID$ 占位符打开应用时钉钉自动替换为真实 corpId

Knodo 会按优先级依次尝试获取,通常无需额外配置。

4. 在 Knodo 中配置企业凭证

除了在钉钉开放平台配置应用地址外,还需要在 Knodo 的 组织设置 > 钉钉集成 中关联企业并填写 AppKey 和 AppSecret,否则免密登录无法正常工作。详见 IM 集成与用户同步

5. 发布生效

配置完成后需要发布新版本,修改才能生效。

企业微信

1. 进入应用管理

登录 企业微信管理后台,进入 应用管理 > 自建应用

2. 配置应用主页

点击应用主页旁的「设置」,配置从工作台点击进入的网页地址:

  • 应用主页桌面端https://knodo.vip/workspaces?corpId=$CORPID$
  • 应用主页移动端https://knodo.vip/bots?corpId=$CORPID$

企业微信应用主页配置

3. corpId 获取方式

企业微信通过 URL $CORPID$ 占位符获取企业 corpId。员工从工作台打开应用时,企业微信会自动将 $CORPID$ 替换为企业的真实 corpId。

4. 在 Knodo 中配置企业凭证

除了在企微管理后台配置应用主页外,还需要在 Knodo 的 组织设置 > 企业微信集成 中关联企业并填写 AgentId 和 Secret,否则免密登录无法正常工作。详见 IM 集成与用户同步

5. 保存生效

配置保存后即时生效,无需额外发布。

飞书

1. 进入应用管理

登录 飞书开放平台,进入您的企业自建应用。

2. 配置网页应用地址

在左侧菜单选择 应用能力 > 网页应用,编辑网页应用配置:

  • 桌面端主页https://knodo.vip/workspaces
  • 移动端主页https://knodo.vip/workspaces

飞书网页应用配置

3. 开通应用权限

在左侧菜单选择 权限管理,确保以下权限已申请并授权:

权限名称权限标识用途
获取用户基本信息contact:user.base:readonly免密登录获取用户姓名、头像等
获取用户邮箱contact:user.email:readonly读取用户邮箱用于账号匹配
获取部门列表contact:department.base:readonly获取部门列表用于用户同步
获取部门成员列表contact:department.member:readonly读取部门下的用户信息
获取通讯录基本信息contact:department.base:readonly获取企业组织基本信息
获取与发送单聊、群组消息im:message机器人发送和回复消息
以应用的身份发消息im:message:send_as_botBot 机器人主动推送消息
获取用户 useridcontact:user.employee_id:readonly免密登录流程获取用户身份

以上权限为免密登录、用户同步和机器人消息的必要权限,缺少任一权限可能导致登录失败或功能异常。

4. 与钉钉/企微的区别

飞书不支持 $CORPID$ 占位符机制,也没有类似 dd.corpId 的客户端属性。飞书的租户标识(tenant_key)通过 OAuth 服务端流程获取:

  1. 飞书客户端自动调用 JS-SDK 获取免登授权码
  2. Knodo 后端用授权码换取 user_access_token,响应中包含 tenant_key
  3. 后端根据 tenant_key 自动关联企业组织

因此飞书的应用首页地址无需添加 $CORPID$ 参数。

5. 在 Knodo 中配置企业凭证

除了在飞书开放平台配置应用地址外,还需要在 Knodo 的 组织设置 > 飞书集成 中关联企业并填写 App ID 和 App Secret,否则免密登录无法正常工作。详见 IM 集成与用户同步

6. 发布生效

配置完成后需要创建新版本并发布,修改才能生效。

配置汇总

IM 平台首页地址格式corpId 获取方式是否需要 $CORPID$
钉钉https://knodo.vip/workspaces?corpId=$CORPID$客户端注入 dd.corpId + URL 参数
企业微信https://knodo.vip/workspaces?corpId=$CORPID$URL 参数替换
飞书https://knodo.vip/workspaces服务端 OAuth 获取 tenant_key

用户体验

配置完成后,企业成员的登录体验:

  1. 在 IM 工作台点击 Knodo 应用图标
  2. 系统自动识别 IM 客户端环境
  3. 自动完成身份认证(无需手动操作)
  4. 首次登录自动创建账号并加入企业组织
  5. 直接进入工作空间页面

整个过程对用户完全透明,实现真正的「一键直达」。

常见问题

Q:配置 $CORPID$ 后打开应用报错「无法获取企业ID」?

A:请检查:

  • URL 参数名是否为 corpId(注意大小写)
  • 占位符是否为 $CORPID$(注意是美元符号包裹、全大写)
  • 是否已发布新版本(钉钉和飞书需要发布后生效)

Q:免密登录后没有自动加入企业组织?

A:请确认:

  • Knodo 系统管理中已配置对应 IM 平台的企业关联
  • 应用首页地址正确包含 $CORPID$ 参数(飞书除外)

Q:飞书为什么不需要 $CORPID$

A:飞书的设计理念不同,租户标识通过服务端 OAuth 流程获取,不依赖客户端 URL 参数。Knodo 后端会在免登流程中自动获取 tenant_key

相关文档

IM 工作台免密登录 | Knodo 文档