开源ERP | Odoo钉钉连接器如何实现钉钉工作台免密直登Odoo
神州数码云基地
编辑于 2022年05月07日 11:56

上一期和大家分享了如何实现用企微扫码快速登录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. 钉钉管理后台权限

钉钉扫码登陆Odoo应用、钉钉平台集成Odoo应用开发流程:

  1. 钉钉连接器(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文档:

如何调用服务端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技术交流群。