昨天发现在企业微信中无法进行小程序登录操作。原来微信和企业微信存在着些许平台差异:
账号系统差异
- 后台获取用户信息的接口不同
- 微信拿到的是个人信息,企业微信拿到的是个人在企业中的信息
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
两种解决方案:
- 后台通过 code2Session 获取 USERID,再继续调用“读取成员”接口查询个人信息。
- 后台调用 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 聊聊, 查看更多联系方式
谈笑风生
哈尼露呀-张三 (来自: 中国 上海 上海 移动) 3年前
大象腿 (来自: 中国 山东 烟台 移动) 3年前
哈尼露呀-张三 (来自: 中国 上海 上海 移动) 3年前
大象腿 (来自: 中国 山东 烟台 联通) 3年前