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

文章目录

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

    账号系统差异

    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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式