
上一期和大家分享了如何实现用企微扫码快速登录Odoo系统,钉钉作为另一个日常办公中的便捷效率工具,在Odoo为我们提供各种丰富模块系统时,与Odoo之间又能产生什么样的化学反应?
今天给大家介绍如何通过Odoo钉钉连接器架起两者之间的桥梁,实现钉钉扫码登陆 Odoo系统,同时实现通过钉钉工作台免密登录直接进入Odoo系统!
需要源码的朋友可关注我们公众号(神州数码云基地,回复Odoo进群)进行获取,我们会定期分享众多odoo干货。
1. 钉钉组织用户扫码登录Odoo,节省 Odoo 用户的维护成本。

2. 免密码快速登陆钉钉工作台应用,方便用户便捷操作使用Odoo系统。

1. 一台外网能访问的服务器并配置域名,如果想本地调试可使用相关工具进行内网穿透,这样钉钉才能回调到 Odoo以及请求到首页,我这里可以推荐钉钉的内网穿透工具 :https://open.dingtalk.com/document/resourcedownload/http-intranet-penetration
2.Odoo 系统配置文件 odoo.conf 必须指定 db_name 数据库名称或者有且仅有一个数据库
3. 钉钉管理后台权限
钉钉连接器(dingtalk_connector)应用模块安装:

在应用中搜索钉钉点击安装即可(如果搜索不出来点击页面中更新按钮更新应用)
2.Odoo应用配置钉钉平台系统参数,在设置-钉钉中配置参数,如下图所示:

相应参数都可以在钉钉管理后台配置查询找到,具体参数对应如下:
钉钉参数钉钉开发平台获取钉钉corpId钉钉开放平台—>首页—>corpId钉钉appKey钉钉开放平台—>应用开发—>企业内部应用开发—>创建应用—>应用信息钉钉appSecrect钉钉开放平台—>应用开发—>企业内部应用开发—>创建应用—>应用信息应用跳转url使用的域名/dingtalk/auth
应用跳转url:该参数需要在钉钉开发平台以及odoo连接器中同步配置
3.钉钉开放平台参数配置:


4.Odoo应用配置钉钉用户id: 首先需要调用钉钉获取用户Id的接口获取用户的钉钉Id,并将用户id填写至设置-管理用户-用户详情中:

5.Odoo应用适配钉钉扫码登陆、钉钉工作平台集成Odoo应用代码改造: 5.1.模型继承res.config.settings构建钉钉配置参数相关字段以调用钉钉api以及跳转地址:

5.2.继承res.users构建用户钉钉id以及定义用户身份认证方法以实现用户身份认证

5.3 登陆接口适配: 扫码登录页面接口,读取设置中配置好的参数以跳转至钉钉的扫码页

钉钉免登接口适配:

以上两个接口都需要请求auth接口以认证用户,auth接口中调用了钉钉api获取user_id且重写了用户身份认证以适配扫码登录和免密登录,需要注意的是不同api需要的accessToken不一定一致:

如何调用服务端API:钉钉开放平台-应用开发-服务端-开发指南
https://open.dingtalk.com/document/orgapp-server/how-to-call-apis
API总览:钉钉开放平台-应用开发-服务端-API总览
https://open.dingtalk.com/document/orgapp-server/api-overview
获取用户token:钉钉开放平台-应用开发-服务端-获取访问凭证-新版服务端api-获取用户个人身份访问凭证-获取用户token
https://open.dingtalk.com/document/orgapp-server/obtain-user-token
获取用户通讯录个人信息:钉钉开放平台-应用开发-服务端-通讯录管理-新版服务端api-获取用户通讯录个人信息:
https://open.dingtalk.com/document/orgapp-server/dingtalk-retrieve-user-information
根据unionid获取用户userid:钉钉开放平台-应用开发-服务端-通讯录管理-服务端api-用户管理:
https://open.dingtalk.com/document/orgapp-server/query-a-user-by-the-union-id
获取企业内部应用的access_token:钉钉开放平台-应用开发-服务端-获取企业内部应用的access_token
https://open.dingtalk.com/document/orgapp-server/obtain-orgapp-token
通过免登码获取用户信息:钉钉开放平台-应用开发-服务端-身份验证(免登)-服务端API-通过免登码获取用户信息
https://open.dingtalk.com/document/orgapp-server/obtain-the-userid-of-a-user-by-using-the-log-free
企业内部应用免登:钉钉开放平台-应用开发-服务端-身份验证(免登)-企业内部应用免登
https://open.dingtalk.com/document/orgapp-server/enterprise-internal-application-logon-free
实现登录第三方网站:钉钉开放平台-应用开发-服务端-身份验证(免登)-实现登录第三方网站
https://open.dingtalk.com/document/orgapp-server/tutorial-obtaining-user-personal-information
版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。
公众号搜索神州数码云基地,后台回复Odoo,加入Odoo技术交流群。