扫码阅读
手机扫码阅读

“史上最快” 登入指南:Odoo 系统如何实现企微扫码登录

452 2023-09-07


Odoo

神州数码云基地

在 Odoo 上的尝试、调研与分享

本期作者

zuokang

一名保持低调,保持进步的

后端开发

我们知道一般登录 Odoo 系统需要先在系统中维护好用户账号,本期就跟大家分享一下另一种快捷的登录方式——通过企业微信扫码登陆到 Odoo 系统。

#1 实现功能

1. 企业微信用户一键同步到 Odoo,节省 Odoo 用户的维护成本。

2. 企业微信用户通过扫二维码即可登陆到 Odoo 系统,提升用户使用体验,免去忘记密码的烦恼。

#2 环境配置

1. 一台外网能访问的服务器并配置域名,如果想本地调试可使用相关工具进行内网穿透,这样企业微信才能回调到 Odoo,我这里可以推荐钉钉的内网穿透工具 :

https://open.dingtalk.com/document/resourcedownload/http-intranet-penetration

2. Odoo 系统配置文件 odoo.conf 必须指定 db_name 数据库名称

3. 企业微信管理后台。

#3 实现步骤

Step 1

获取企业微信连接器源码进行安装。

安装完之后配置连接器参数,如下图所示:

相应参数都可以在企业微信管理后台配置查询找到,下面是参数具体查找路径:


应用名称:自定义名称

企业id:进入企业微信管理后台—>我的企业—>企业信息—>企业ID

通讯录密钥进入企业微信管理后台—>管理工具—>通讯录同步—>企业ID—>Secret 点击查看

应用agentid和应用密钥:进入企业微信管理后台(企业微信 (qq.com))—>应用管理—>应用—>添加自建应用—>创建完成后会显示 AgentId 和密钥 Secret。

应用跳转url:自建应用—>底部设置企业微信授权登录—>Web网页设置回调域(即可外网访问的 Odoo系统的域名)

Step 2

配置完成后点击右侧用户同步按钮,没问题的话会给出提示”用户同步成功“。

随后需要去用户那里看看,确认一下企业微信用户是否全部正常同步过来了。这里用户的同步逻辑是用户若在 Odoo 中存在则更新,不存在则新增。

Step 3

以上步骤都弄完了之后退出登陆,登陆页将会出现企业微信的二维码。

以后用户访问 Odoo 登陆页都将会显示企业微信的二维码,下方依然保留了账号密码的登陆方式,可进行切换。

以上就是企业微信连接器的用法,

下面就跟大家讲一下具体的代码实现原理。


#4 实现原理

企业微信api开发资料


企业微信 api 开发基础知识开发前必读 - 接口文档 - 企业微信开发者中心

https://developer.work.weixin.qq.com/document/path/90664

获取token:获取access_token - 接口文档 - 企业微信开发者中心

https://developer.work.weixin.qq.com/document/path/91039

获取根据部门获取用户:获取部门成员 - 接口文档 - 企业微信开发者中心

https://developer.work.weixin.qq.com/document/path/90200

扫码授权登陆:开始开发 - 接口文档 - 企业微信开发者中心

https://developer.work.weixin.qq.com/document/path/91025

企业微信扫码登录接入流程图

Step 1

创建微信连接器模块。

Step 2

连接器 model:


access_token: 该字段用于持久化微信给的 access_token,因为微信的接口调用次数是有限制次数的,不宜频繁调用,持久化后便于以后重新获取,另一个作用就是利用这个字段对 token 进行分区,因为每个应用的 token 都是独立的。

redirect_url: 对应 Odoo 系统的访问域名,若有端口把端口也加上。

Step 3

获取企业微信通讯录的 access_token。

Step 4

根据通讯录的 access_token 获取企业微信的用户,这里我们就从根部门递归获取全员的数据,拿到企业微信的用户数据后将 name 和 userId 同步到 res_user 表的 name 和 login 中,框起来的部分是要注意的地方。

Step 5

在企业微信的模块中重写 web_login 相关的接口和页面,关于如何在 Odoo 的登陆页中内嵌登陆二维码可以参考上面的扫码授权登陆。

登陆页初始化的时候需要调接口获取我们自己配置的参数,拿到配置参数后才能根据配置构造我们的二维码。

Step 6

二维码构建完成后用户扫码后企业微信会根据我们配置的 redirect_url 跳转到我们的Odoo系统,即访问我们重写的 web_login 接口并附带上用户的 code 和 appid,在 web_login 接口中对用户的 code 进行消费和用户校验,全部通过后用户将会成功进入 Odoo 系统中。

想要了解更多,点击 查看原文