在开发企业应用的过程中,我们发现越来越多的用户开始使用企业微信,使用后,很多人说:真香!所以很多用户说:
你的应用能与企业微信对接吗?让我们直接在企业微信中打开轻流。
你能把企业微信的通讯录同步到轻流吗?这样就不需要在轻流中邀请人了!
我公司所有的考勤记录都在企业微信上。这个数据能直接导入轻流吗?
公司使用腾讯企业邮箱,这个邮箱组织能同步到轻流吗?
“......”(此处省略上万字)
因此,轻流合作伙伴决定让轻流与企业微信对接,使其成为企业微信的应用!
当然,这不是企业微信对接指南(如果您想查看详细的对接步骤,请移动企业微信的开发文件)。
一、分清三个Token对接开发,调用企业微信API我们会遇到三种Token,分别是:
providerToken,服务商的Token:用于调用服务商级别的接口,如扫码登录;suiteToken,应用的Token:这里的应用程序是指我们自己开发的应用程序,如轻流,用于获取企业信息的预授权代码;corpToken,授权企业的Token:当客户授权我们的应用程序访问他的企业信息时,我们使用它Token调用企业微信API,比如通讯录管理。每个Token功能不同!
调用时一定要分清楚!
调用时一定要分清楚!
调用时一定要分清楚!
2、主动同步通讯录时,应注意增量同步将企业微信通讯录与企业应用同步,可采用两种方式:主动调用企业微信API同步通讯录,接收企业微信通讯录变更事件更新通讯录。
主动同步发生在什么时候?我们认为有两种情况:
如果应用程序收到新的授权事件,则应用程序需要主动同步地址簿;由于网络或其他原因,地址簿变更事件的应用程序未收到或发送错误,因此需要主动同步地址簿,以确保地址簿的正常使用。主动同步通讯录时,需要将获取的新通讯录结构与应用中现有的通讯录结构进行比较,删除企业微信中删除的用户,增加企业微信中的新用户。如果用户信息更新,则需要更新用户信息(如昵称和化身)。在比较时,用户可以UserID和部门的DeptID作为Key,然后找到新的、删除和更新的部分。
主动同步后,基本上只要用户启动主动同步操作,应用程序就会构建最新的地址簿!
但是,如果仅仅只做了这个,你会发现用户某天会突然和你说:
为什么我组织的一个成员在登录系统后发现与他有关的数据消失了?
对,这就是企业微信里的一个设定:企业微信用户的UserID可以改变!
如果用户的UserID如果发生了变化,我们自己开发的应用程序将识别为另一个人,然后在应用程序中为他创建一个账户,并与企业的微信用户联系起来。然后,当企业微信用户登录应用程序时,他们会觉得自己已经改变了世界(什么都没有,惊讶或惊讶?
那么如何解决这个问题呢?请看第三节——处理企业微信通讯录变更。
三、处理企业微信通信变更事件企业微信组织管理员更改企业微信通讯录时,企业微信服务器会将注册回调地址发送到第三方应用http请求,反馈通讯录的变更。
也就是说,如果我们处理好所有这些变更,理论上,应用程序可以保持地址簿与企业微信的地址簿一致,而无需主动同步地址簿。
地址簿变更事件大致分为三类:
成员变更事件:成员的添加、删除和更新;部门变更事件:部门的添加、删除和更新;标签变更事件:标签更新(授权应用访问的标签不能删除或添加),包括标签中成员的新删除、部门的新删除。说到上一节UserID在成员的更新事件中,可以收到相应的变更Handler如果处理好,就不会有问题。
然后,我们把所有的事件都交给我们Handler全部写好,部署到测试环境开始测试。
Step1:在企业微信通讯录中添加用户,在添加时指出用户的部门和角色。
Step2:观察企业微信通讯录更新事件...
然后我们发现企业微信给我们发了三个事件!用户添加事件,部门更新事件,角色更新事件,三个事件的顺序不同(随机发射)!
所以,如果你想写每个事件,Handler,请多做实验,观察各种花式操作下,企业微信会给你发送什么事件。
从上述实验结果可以看出,每个事件的处理都需要仔细考虑。例如,当您收到部门更新事件时,您需要检查部门成员。如果有新成员,您需要将其添加到应用程序地址簿中;当您收到用户添加的事件时,您需要检查用户是否已经在应用程序通信中。
四、注意客户的授权范围踩坑后,开发者还需要注意企业微信授权给应用的可见范围。
理论上,用户可以通过三种方式同步应用通讯录:
用户直接在应用程序授权范围内;用户在应用程序授权范围内的部门;用户在应用程序授权范围内的标签或标签中的部门(是的,企业微信的标签可以放入部门)。所以,当你的客户问你:为什么我们组织的成员在你的应用程序中看不到时,你必须确认他的成员是否在授权范围内。
因为标签可以包含部门和成员,一个成员可以通过两种方式同步,无论是标签还是标签。
所以这个时候要小心!如果您收到一个标签更新,则表明该标签删除了成员A。但是成员A授权部门仍然可见,因此您只需移除成员A与此标签的关联,而不是删除成员A。
轻流建议:记录成员或部门同步进入通讯录的方式!
最后的Tips请使用队列处理企业微信通讯录请求,逐一处理,不要平行处理,否则数据不一致会让你疯狂。
扫码咨询与免费使用
申请免费使用