微信小程序如何兼容企业微信

更新日期: 2020-12-17 阅读次数: 4795 字数: 555 分类: 微信小程序

昨天发现在企业微信中无法进行小程序登录操作。原来微信和企业微信存在着些许平台差异:

账号系统差异

  1. 后台获取用户信息的接口不同
  2. 微信拿到的是个人信息,企业微信拿到的是个人在企业中的信息

API 接口及组件差异

企业微信 API 感觉市场潜力巨大,可以有效管理客户资源,避免因员工离职造成客户资源流失。而且,微信渗透率极高,我觉得搞不好会抢占一大批 CRM 的市场。

如何判断是在哪个平台打开的

wx.getSystemInfoSync 可以判断小程序是运行在微信中,还是企业微信中。

小程序可以在微信和企业微信中调用此接口,但是在企业微信中调用此接口时,会额外返回一个 environment 字段(微信中不返回),如此字段值为 wxwork,则表示当前小程序运行在企业微信环境中。

  // 判断是否在企业微信中
  wx.getSystemInfo({
    success (res) {
      if (res.environment == "wxwork") {
        this.setData({
          isQiyeWeixin: true,
        })
      }
    }
  })

开发工具支持

开发者可使用微信开发者工具进行企业微信小程序开发,使用前需要配置企业微信插件,见开发者工具插件支持

wx.qy.login 获取临时登录凭证

code,然后小程序端将 code 传到服务端,通过 code2Session 接口获得用户在企业中的 USERID。

注:这个 ID 是个字符串,以我为例,就是我的中文名字的拼音,每个字的拼音首字母大写。例如: SunZhongWei.

后台通过 USERID 查询员工信息

https://work.weixin.qq.com/api/doc/90000/90135/90196

wx.qy.getEnterpriseUserInfo 无法获取用户信息

如果想在小程序中,沿用微信端的做法直接调用 wx.qy.getEnterpriseUserInfo,是无法获取用户信息的。会报错:

invoke result:qy.getEnterpriseUserInfo,qy.getEnterpriseUserInfo:fail:no session or expired

两种解决方案:

  1. 后台通过 code2Session 获取 USERID,再继续调用“读取成员”接口查询个人信息。
  2. 后台调用 Code2Session 后,前端再调用 wx.qy.getEnterpriseUserInfo。但交互上不如第一种做法简单直接。

企业微信中打开体验版小程序

https://work.weixin.qq.com/api/doc/90000/90136/92380

注意,只能邀请在企业通讯录里的人进行体验。

参考

  • https://work.weixin.qq.com/api/doc/90000/90136/92455
  • unionid https://developers.weixin.qq.com/community/develop/doc/00008e139a44181a511a8b4165b000

关于作者 🌱

我是来自山东烟台的一名开发者,有敢兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式

谈笑风生

哈尼露呀-张三

最近刚好有个项目,C端用户和B端的工程师都想要用小程序。一个小程序,两类用户在两个平台各自用,C端用户在微信用,B端工程师在企业微信用,判断身份进入不同界面,是否可行?

大象腿

我这的需求跟你类似。我也是这周刚上手,目前看逻辑可行,自测也可行,还没上线。等上线运行一段时间看看反馈效果吧。

哈尼露呀-张三

腿兄,效果怎样?我们估计年后才能开始开发

大象腿

并没有什么问题啊。。。