我们知道odoo登陆需要在系统中维护好用户账号后才能登陆,今天就跟大家分享一下另一种快捷的登陆方式,如何实现通过企业微信扫码登陆到odoo系统。

一.功能:

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

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

二.环境:

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

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

3.企业微信管理后台。

三.使用步骤:

**1.**获取企业微信连接器源码进行安装,安装完之后配置连接器参数,下面的参数都可以在企业微信管理后台配置查询找到,然后填到连接器这里来:

应用名称:自定义名称

企业id:进入企业微信管理后台(企业微信 (qq.com))—>我的企业—>企业信息—>企业ID

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

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

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

37802cabc0890d7f1870c58d54f029e5.png

**2.**配置完成后点击右侧用户同步按钮,没问题的话会给出提示”用户同步成功“, 然后去用户哪里看看,确认一下企业微信用户是否全部正常同步过来了,这里用户的同步逻辑是用户若在odoo中存在则更新,不存在则新增。

ce23ff3c92537a7899347f1f5c871217.png

a595ff4c6caf6915d195ef98001d9727.png

**3.**以上步骤都弄完了之后退出登陆,登陆页将会出现企业微信的二维码,以后用户访问odoo登陆页都将会显示企业微信的二维码,下方依然保留了账号密码的登陆方式,可进行切换。

a5ee2767ac48366c7d7c2da1c9d7f359.png

以上就是企业微信连接器的用法,下面就跟大家讲一下具体的代码实现原理,程序员同学可以看看。

四.实现原理:

企业微信api开发资料:

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

5eef7021ed0d74175b2f065cca4bc272.png

**1.**创建微信连接器模块

**2.**连接器model:

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

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

bd5908ce1e9f1f77a61009a7c5844b55.png

**3.**获取企业微信通讯录的access_token

fda44b2a75efd4b7fec0a8b6dca4c9e5.png

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

585a068cfa4f038b66e6e512282bb607.png

**5.**在企业微信的模块中重写web_login相关的接口和页面,关于如何在odoo的登陆页中内嵌登陆二维码可以参考上面的扫码授权登陆。登陆页初始化的时候需要调接口获取我们自己配置的参数,拿到配置参数后才能根据配置构造我们的二维码。

e24594f4fa1c599af5ab2d100fd81a83.png

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

2faa25ddc8865b9b1cbb416d66b7f70c.png
c859260d4932c56e2e9d3d40e0e6f43c.png

结语:

感谢小伙伴们耐心看到这里,以上内容要是有什么没有描述清楚的地方或者想要源码的欢迎进行评论留言,我们会耐心解答。

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

公众号后台回复Odoo,加入Odoo技术交流群。

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐