Odoo 开源系统对接企业微信或钉钉 OA 实现免密登录详细对接教程

Odoo 是全球最流行的开源 ERP 系统之一,企业部署后如何与 OA(企业微信/钉钉)打通实现免密登录?本文详解方案 A(OA 嵌入 Odoo)和方案 B(OAuth2.0 标准协议)两种 SSO 方案的完整对接流程、4 项对接前必做准备、企业微信与钉钉并存的组织架构同步方案,以及 7 个实战避坑点。

📞 IT 峰哥团队 — 企业 IT 全规模落地服务商

IT 峰哥(微信 17712677007,微信同号)专注于企业信息化全规模落地,从十几人创业团队到千人集团都能完整覆盖。核心服务包括:

  • 网络安全:防火墙、上网行为管理、终端准入、APT 防护、零信任接入
  • 数据安全:文档加密管控、数据防泄密(DLP)、数据库审计、备份容灾
  • 超融合与基础架构:VMware/Hyper-V 集群、超融合一体机、分布式存储、双活机房
  • 业务系统ERP/CRM/OA 集成、MES、PLM、HR、文档协作平台
  • 运维监控:Zabbix、Prometheus、堡垒机、日志分析、AD/Exchange 邮件
  • 物理层:门禁考勤、视频监控、动环监控、综合布线、机房建设

客户定位不挑规模,无论是初创公司还是上市公司,都提供从方案设计 → 设备选型 → 部署实施 → 培训运维的端到端服务。📞 24 小时全天候响应,江浙沪当天上门,全国 48 小时到现场。

Odoo 开源系统对接企业微信或钉钉 OA 实现免密登录详细对接教程

一、为什么企业要把 Odoo 对接到 OA?—— SSO 免密登录的 3 大价值

先讲一个真实场景:某制造企业上了 Odoo 16 做 ERP,又上了企业微信做 OA 审批,员工每天要切换 4 个系统——Odoo(业务)、企业微信(沟通审批)、钉钉(部分部门用)、AD 域账号(电脑开机)。每个系统一套密码,密码策略又都不一样(Odoo 要求 12 位复杂密码,企业微信要求 6 位数字密码),结果 IT 部门每天处理 20+ 密码重置工单,90% 是同一个人”又忘了”。

这种混乱不是个案,是 90% 中小企业上完 ERP/OAD 后的通病。SSO(Single Sign-On,单点登录)一次性解决 3 个核心问题:

  • 员工效率提升:每天省去 5-10 次输入密码的操作,登录环节从 30 秒缩短到 1 秒
  • IT 工单减少 80%:密码重置、账号解锁、密码策略同步等工单几乎归零
  • 安全合规提升:企业微信/钉钉作为身份源(IdP),密码策略统一(至少 8 位 + 字母数字组合 + 90 天过期),比 ERP 系统单独设置更安全

更深层的价值是身份打通:HR 在企业微信/钉钉组织架构里调整一个员工(入职/转岗/离职),Odoo 的用户表自动同步——HR 不用手动去 Odoo 里加账号、删账号、停用账号。这种”组织架构统一”在等保 2.0 三级、ISO 27001 审计里是硬性要求。

Odoo 对接企业微信和钉钉有 3 种主流方案,技术难度从低到高分别是:

方案 实现原理 适用规模 开发难度
方案 A:OA 应用嵌入 Odoo在企业微信/钉钉工作台里嵌入 Odoo 网页链接,点击直接登录(SSO 跳转)50-200 人★ 低
方案 B:Oauth2.0 标准协议对接企业微信/钉钉作为 OAuth 提供方,Odoo 作为 OAuth 客户端,用户授权后拿到身份200-1000 人★★ 中
方案 C:SAML 2.0 企业级 SSO自建 IdP(Keycloak/Azur e AD),Odoo + OA + 其他系统全部接入 IdP1000+ 人★★★ 高

本文重点讲方案 A 和方案 B——覆盖 95% 中小企业场景。方案 C(SAML)是大企业方案,涉及 Keycloak/Azur e AD 等专业 IdP 部署,另文单独讲。

二、对接前的 4 项必做准备

踩过坑的总结:90% 的 Odoo SSO 对接失败都是准备工作没做足。下面是 4 项必做准备:

2.1 确认 Odoo 版本与 OAuth 模块

Odoo 14.0 之后内置了 `auth_oauth` 模块(在”通用设置 → 集成 → OAuth 提供商”里启用)。Odoo 13.0 及之前需要装第三方模块(如 `oauth_provider`、`auth_oauth_fork`)。

本文以 Odoo 16.0 企业版/社区版为例,社区版需要确认 `auth_oauth` 已安装:

  • 登录 Odoo → 菜单”应用” → 搜索 “OAuth” → 安装 “OAuth 验证” 模块
  • 安装后菜单路径:”设置 → 通用设置 → 集成 → OAuth 提供商”
  • 如果菜单里没看到,菜单”设置 → 技术 → 用户定义 → 系统参数”,确认 `auth_oauth.module.auth_oauth` 已激活

2.2 确认企业微信/钉钉应用类型

两种 SSO 方案对应用类型要求不同:

应用类型 方案 A 嵌入 方案 B OAuth2
企业微信「自建应用」✅ 支持✅ 支持
企业微信「第三方应用」⚠️ 受限❌ 不支持
钉钉「H5 微应用」✅ 支持✅ 支持
钉钉「企业内部应用」✅ 支持✅ 支持
钉钉「第三方应用」⚠️ 受限❌ 不支持

选错应用类型会导致 SSO 永远跳不过去——本文默认使用”企业微信自建应用”和”钉钉企业内部 H5 微应用”。

2.3 准备域名与 HTTPS 证书

企业微信/钉钉的 OAuth 回调地址必须是 HTTPS 公网域名,不能是 IP 地址。如果你还在用 `http://192.168.1.10:8069` 这种内网地址访问 Odoo,必须先做以下任一处理:

  • 方案 1(推荐):把 Odoo 通过 Nginx 反向代理暴露到公网,绑定一个域名(如 `erp.yourcompany.com`),申请 Let’s Encrypt 免费 SSL 证书
  • 方案 2:用内网穿透工具(frp、nps、cloudflare tunnel)把 Odoo 暴露到公网,同样需要 HTTPS
  • 方案 3:仅在企业内网环境使用,关闭企业微信/钉钉的”公网回调”校验(企业微信管理后台 → 应用 → 自建应用 → 域名配置 → 设置可信域名)

2.4 确认 Odoo 网络可达企业微信/钉钉 API

Odoo 服务器(一般在企业内网或 DMZ 区)必须能访问企业微信/钉钉的 API 服务器:

  • 企业微信 API:`qyapi.weixin.qq.com`(443 端口 HTTPS)
  • 钉钉 API:`oapi.dingtalk.com`、`api.dingtalk.com`(443 端口 HTTPS)

测试命令(从 Odoo 服务器上执行):

curl -I https://qyapi.weixin.qq.com/cgi-bin/gettoken 应返回 HTTP 200;
curl -I https://oapi.dingtalk.com/attendance/list 应返回 HTTP 200 或 401/400(401/400 说明能通,只是没带 token)。

三、方案 A · 企业微信嵌入 Odoo(最简方案,1 小时搞定)

方案 A 是最简单的 SSO 方案——员工在企业微信工作台点击”Odoo”图标,直接跳转到 Odoo 主页,全程不需要输入 Odoo 密码。前提是用户在企业微信里已经登录

3.1 企业微信管理后台创建自建应用

  1. 登录企业微信管理后台 `https://work.weixin.qq.com/wework_admin/`
  2. 菜单”应用管理 → 自建应用” → 点击”创建应用”
  3. 填写应用信息:
    • 应用名称:建议”ERP/Odoo”或”业务系统”
    • 应用 Logo:上传 Odoo 官方 logo 或公司 logo
    • 应用介绍:填”Odoo 开源 ERP 系统”
    • 可见范围:选择哪些部门/员工能用(默认全员)
  4. 创建成功后进入应用详情页,记下两个关键值:
    • AgentId:应用唯一标识(如 `1000002`)
    • Secret:应用密钥(点击”查看”按钮获取)

3.2 配置应用主页

在应用详情页找到”应用主页”区域,配置 Odoo 的入口 URL:

  • 应用主页 URL:填 Odoo 的完整 URL,如 `https://erp.yourcompany.com/web`
  • 应用主页的 OAuth 2.0 授权回调域:填 Odoo 的域名根,如 `erp.yourcompany.com`

这是关键步骤——回调域不配会导致 SSO 跳转时报”redirect_uri 域名与后台配置不一致”错误。

3.3 配置可信域名(解决 JS-SDK 调用限制)

如果 Odoo 网页里需要调用企业微信的 JS-SDK(如获取员工信息、扫码登录),还需要配置可信域名:

  • 应用详情页 → “开发者接口” → “网页授权及 JS-SDK”
  • 配置”可信域名”:填 `erp.yourcompany.com`
  • 下载校验文件放到 Odoo 站点根目录(如 `https://erp.yourcompany.com/WW_verify_XXXX.txt`)

3.4 Odoo 端无需改动

方案 A 的好处是 Odoo 不需要任何代码改动——员工点击企业微信里的”Odoo”图标,会直接以浏览器方式打开 Odoo URL。但这里有个坑:

员工浏览器里必须已经登录了 Odoo(传统用户名密码登录)。如果员工没登录过 Odoo,第一次访问还是会跳到 Odoo 登录页要求输入用户名密码。

解决方法:在企业微信工作台嵌入 Odoo 时,URL 加一个 Odoo 的”自动登录” token 参数(Odoo 自带 `auth_signup` 模块的 magic link 功能),或者配置 Odoo 的”长期免登录 cookie”(设置 → 通用设置 → 安全 → 用户会话超时设为 30 天)。

但更优雅的方案是升级到方案 B(OAuth2 标准协议)——员工点击企业微信图标后,真正实现”零密码登录”。

四、方案 B · OAuth2.0 标准对接(推荐生产环境使用)

方案 B 是真正的 SSO 方案——员工点击企业微信的”Odoo”图标,企业微信把员工身份(userid、姓名、部门、手机号)通过 OAuth2 协议传给 Odoo,Odoo 自动创建账号或匹配已有账号,员工全程无需输入密码。

4.1 企业微信端准备 OAuth 应用

企业微信的 OAuth 2.0 对接需要”网页应用”类型(自建应用默认就是)。在自建应用详情页:

  • “开发者接口” → “网页授权及 JS-SDK” → 配置 OAuth 授权回调域:填 `erp.yourcompany.com`
  • 记下 CorpID(企业 ID):我的企业 → 企业信息 → CorpID
  • 记下 CorpSecret(应用 Secret):应用详情页 → Secret
  • 记下 AgentId:应用详情页 → AgentId

4.2 Odoo 端启用 OAuth 模块

  1. 登录 Odoo → 菜单”应用” → 搜索 “OAuth” → 安装 “OAuth 验证” 模块
  2. 菜单”设置 → 通用设置 → 集成 → OAuth 提供商”
  3. 点击”新建”创建企业微信 OAuth 提供商:
    • 提供商名称:`WeCom`(自定义)
    • 客户端 ID:填上面记下的 CorpID
    • 客户端密钥:填上面记下的 CorpSecret
    • 授权端点:`https://open.weixin.qq.com/connect/oauth2/authorize`
    • 令牌端点:`https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo`
    • 范围:`snsapi_base`(静默授权)/ `snsapi_userinfo`(弹出授权,需用户确认)

4.3 配置 Odoo 用户授权流程

Odoo 默认 OAuth 流程是”用户登录页 → 选择 OAuth 提供商 → 跳转企业微信 → 授权 → 回到 Odoo 自动登录”。需要做以下配置:

  • 菜单”设置 → 通用设置 → 集成 → OAuth 提供商” → 编辑 WeCom → 勾选”允许用户使用该提供商登录”
  • 菜单”设置 → 用户与企业 → 用户” → 给每个员工创建 Odoo 账号(提前批量导入,姓名/邮箱/手机号跟企业微信一致)

关键点:Odoo 用户表的”邮箱”或”手机号”必须跟企业微信用户的”邮箱”或”手机号”完全一致,OAuth 回调时才能匹配到已有账号。

4.4 测试 OAuth 登录流程

完整流程测试:

  1. 在 Odoo 登录页点”使用 WeCom 登录”按钮
  2. 跳转企业微信授权页(手机扫码或自动登录)
  3. 用户点击”同意授权”
  4. 企业微信回调 Odoo 的 `/auth_oauth/callback` 端点
  5. Odoo 用 code 换 access_token,用 access_token 调 `/cgi-bin/user/getuserinfo` 拿 userid
  6. Odoo 用 userid 在用户表里匹配,找到已有用户并自动登录
  7. 跳转 Odoo 主页,员工无需输入 Odoo 密码

4.5 关键坑点 1:手机号匹配 vs 邮箱匹配

企业微信的 `getuserinfo` 接口只返回 userid,不直接返回邮箱或手机号。需要额外调一次 `/cgi-bin/user/get` 接口才能拿到员工详情。

Odoo 的 `auth_oauth` 模块默认不解析二次接口,需要写个自定义模块扩展

res.users 模型上加个字段 `wechat_userid`(企业微信 userid),OAuth 回调时用 userid 去企业微信 API 拉手机号,再用手机号匹配 Odoo 用户。

这部分代码量大约 50-100 行 Python,技术细节下文第五章”代码实战”展开。

4.6 关键坑点 2:第一次登录自动创建账号

如果企业微信里某个员工还没在 Odoo 里有账号,默认行为是登录失败。可以启用 Odoo 的”首次登录自动创建账号”选项:

  • 菜单”设置 → 通用设置 → 集成 → OAuth 提供商” → 编辑 WeCom → 勾选”允许用户首次登录自动注册”
  • 注意:自动创建的账号默认权限很低,需要管理员手动调整

五、钉钉对接 Odoo · 同样走 OAuth2

钉钉的对接原理跟企业微信几乎一致,区别在于 API 地址和参数命名。

5.1 钉钉管理后台创建 H5 微应用

  1. 登录钉钉开放平台 `https://open-dev.dingtalk.com/`
  2. 菜单”应用开发 → H5 微应用” → “创建应用”
  3. 应用类型选”企业内部应用”(不要选第三方应用)
  4. 填写应用信息:
    • 应用名称:建议”ERP/Odoo”
    • 应用 Logo、描述、可见范围同企业微信
    • 应用首页链接:填 Odoo 的入口 URL `https://erp.yourcompany.com/web`
  5. 创建成功后进入应用详情,记下:
    • AppKey(相当于企业微信的 CorpID)
    • AppSecret(相当于 CorpSecret)
    • AgentId(多应用场景下区分用)

5.2 Odoo 端配置钉钉 OAuth

  1. 菜单”设置 → 通用设置 → 集成 → OAuth 提供商” → 新建
  2. 配置:
    • 提供商名称:`DingTalk`
    • 客户端 ID:填 AppKey
    • 客户端密钥:填 AppSecret
    • 授权端点:`https://oapi.dingtalk.com/connect/oauth2/sns_authorize`
    • 令牌端点:`https://oapi.dingtalk.com/sns/getuserinfo_bycode`
    • 范围:`snsapi_login`(网页登录)

5.3 钉钉的免登录跳转(企业微信没有的特性)

钉钉有一个企业微信没有的好功能——免登录 code 跳转。在钉钉工作台点击应用图标时,钉钉会自动在 URL 里加一个 `code` 参数,Odoo 拿到 code 可以直接换 userid,整个过程不需要用户授权确认。

这意味着在钉钉工作台嵌入 Odoo 是真正的零感知登录——员工点图标直接进 Odoo,没有任何授权弹窗。企业微信虽然也有类似能力,但需要额外配置且受应用类型限制。

六、Odoo + 企业微信 + 钉钉 · 三方同步方案

很多企业既用企业微信又用钉钉(部分部门用钉钉、部分部门用企业微信)。Odoo 一个数据库怎么同时支持两个 OAuth 提供商?

6.1 多 OAuth 提供商共存

Odoo 的 `auth_oauth` 模块原生支持多个 OAuth 提供商并存——员工登录时可以选”用企业微信登录”或”用钉钉登录”。配置方法:

  • 按上面第三/第五章分别配置 WeCom 和 DingTalk 两个 OAuth 提供商
  • 登录页会出现两个按钮”用企业微信登录””用钉钉登录”
  • 每个员工选自己用的那个 SSO 即可

6.2 同员工跨 SSO 体系打通

如果某个员工既用企业微信又用钉钉(极少但存在),Odoo 默认会创建两个账号。解决方案:

  • 在 Odoo 用户表里给该员工创建一个账号,把企业微信的 userid 和钉钉的 userid 都关联到这个 Odoo 账号
  • OAuth 回调逻辑里加判断:如果企业微信 userid 匹配到一个 Odoo 账号 → 用该账号;如果钉钉 userid 也匹配到该 Odoo 账号 → 还是用该账号

技术实现:在 `res.users` 模型加 `wechat_userid` 和 `dingtalk_userid` 两个字段,OAuth 回调函数里依次尝试匹配。

6.3 组织架构同步(HR 系统集成)

如果企业用钉钉/企业微信的”智能人事”做 HR 系统,Odoo 可以反过来订阅组织架构变更事件:

  • 企业微信”通讯录同步 API”:实时推送员工入职/转岗/离职事件
  • 钉钉”智能人事 OpenAPI”:每天定时拉取组织架构全量
  • Odoo 端写一个 cron 定时任务(每 1 小时),对比 Odoo 用户表与 OA 组织架构,自动同步:新增员工创建 Odoo 账号、离职员工停用 Odoo 账号、转岗员工调整 Odoo 部门

这部分代码量约 200-300 行 Python,建议写成独立的 Odoo 模块(`wechat_sync`/`dingtalk_sync`)。

七、实战避坑指南 · 7 个常见踩坑点

坑 1:回调域配置错误(最常见)

症状:点击 SSO 按钮后页面跳转到企业微信/钉钉,授权后回跳 Odoo 时报”redirect_uri 域名与后台配置不一致,错误码 10003″。

原因:OAuth 提供商后台配置的”授权回调域”跟 Odoo 实际域名不一致。比如配的是 `erp.yourcompany.com` 但 Odoo 实际访问域名是 `erp.company.com.cn`。

修法:OAuth 提供商后台 → 应用详情 → 网页授权 → 授权回调域,填 Odoo 实际访问的完整域名(不带协议、不带路径)。

坑 2:HTTPS 证书不被信任

症状:OAuth 回调时报”SSL certificate verify failed”。

原因:Odoo 用了自签名证书或过期证书,企业微信/钉钉的 API 服务器不信任。

修法:用 Let’s Encrypt 申请免费证书(有效期 90 天,可自动续期),或者购买商业 SSL 证书。

坑 3:Odoo 用户表账号没提前建好

症状:员工用 SSO 登录时报”未找到对应账号”。

原因:Odoo 用户表里没这个员工。OAuth 默认不会自动创建账号(除非勾选了”首次登录自动注册”选项)。

修法:批量导入员工到 Odoo 用户表,字段映射为:姓名 → `name`、邮箱 → `login`(如果用邮箱登录)、手机号 → 企业微信 userid 关联字段。导入路径:”设置 → 用户与企业 → 用户 → 导入”。

坑 4:企业微信通讯录权限没开

症状:OAuth 回调成功,但调用 `/cgi-bin/user/get` 接口时报”60011 没有权限访问该 userid”。

原因:企业微信应用详情页 → “开发者接口” → “网页授权及 JS-SDK” → 没勾选”读取成员”权限范围。

修法:勾选相应权限范围。如果是企业管理员代员工登录,还需要”管理员授权”选项。

坑 5:钉钉微应用类型选错

症状:钉钉工作台点击应用图标,报”应用类型不支持免登”。

原因:钉钉应用类型选了”第三方应用”(只对外部用户开放),不是”企业内部 H5 微应用”。

修法:删除原应用,重新创建时选”企业内部应用”。

坑 6:钉钉的 corpId / appId 概念混淆

症状:调钉钉 API 时报”Invalid appId”。

原因:钉钉有两个 ID——`CorpId`(企业 ID)和 `AppId`(应用 ID)。很多文档混着说,新手容易搞错。

修法:钉钉的免登录授权用 `CorpId`;企业内部 OpenAPI 用 `AppId`(也就是 AppKey)。OAuth 流程用的是 CorpId + AppKey + AppSecret。

坑 7:Odoo 时区不一致导致登录失效

症状:用户 SSO 登录后立刻跳转到登录页,明明授权成功了却进不去。

原因:Odoo 服务器时区设置错误,导致 access_token 校验时间戳失败。

修法:Odoo 服务器跑 `timedatectl set-timezone Asia/Shanghai` 修正时区;PHP/Cron 容器里也设置 `TZ=Asia/Shanghai` 环境变量。

八、发布前必读的官方 URL 清单

本文涉及多个第三方平台的 API 和管理后台,功能/界面/参数会随版本变化。发布前请实时打开以下 URL 核对最新状态:

本教程涉及的 Odoo 版本:16.0;其他版本(15.0/17.0)流程类似但菜单路径和模块名可能不同,请以官方实时文档为准。

九、结语 · SSO 不是技术问题,是管理问题

最后说一句心里话:Odoo 对接企业微信/钉钉实现 SSO,本质是把”身份认证”这件事统一管理,技术只是手段。很多企业以为装个 OAuth 模块就完事了,结果员工登录体验没改善多少;真正成功的 SSO 实施,需要配合组织架构统一、权限梳理、密码策略统一这 3 件事。

具体来说,企业做 Odoo SSO 前要先回答 3 个问题:

  • 我们用什么做身份源(IdP)?企业微信?钉钉?还是 Azure AD/Keycloak?——决定了 OAuth 提供商配置
  • 员工在 Odoo 里的账号和组织架构怎么跟 IdP 同步?手动批量导入?自动同步?——决定了日常运维成本
  • 离职员工怎么自动在 Odoo 里停用?——决定了数据安全底线

把这 3 个问题想清楚,再选 OAuth2 方案落地,技术只是把管理制度固化的手段。本文的对接步骤、避坑指南、官方 URL 清单都是经验沉淀,希望能帮正在做 Odoo SSO 的企业少走弯路。

如果对 Odoo 对接企业微信/钉钉有任何疑问,或者需要专业的 Odoo 部署 + SSO 集成方案咨询,IT 峰哥团队提供从需求调研 → Odoo 部署 → SSO 集成 → 培训运维的全流程服务,微信 17712677007 随时可联系。

🚀 IT 峰哥软件库 — 海量软件资源一键直达

正版企业软件、运维工具、数据库、中间件、备份容灾、视频监控、加密软件……数千款授权版本,覆盖企业 IT 全部场景,登录后免费下载。

👉 立即访问 pan.92zl.cn · 注册即送 7 天高级会员体验

访问首页底部”联系合作”获取企业批量授权、企业级交付方案

默认

文档加密管理软件 IP-Guard 实施全流程:透明加密·权限管控·审计追溯一站式部署

2026-7-27 10:31:26

默认

Hermes 智能体对接飞书 6 大 Agent 实战:财务·合同·数据·IT·网络·服务器全流程教程

2026-7-27 11:51:07

搜索