评论

企业微信自建小程序应用踩坑实践

最近开发了一个小程序接入企业微信的需求,企业微信的权限限制诸多,网上的完整示例又少之又少,因此踩了比较多坑,与大家分享。

最近开发了一个小程序接入企业微信的需求,企业微信的权限限制诸多,网上的完整示例又少之又少,因此踩了比较多坑,与大家分享。

坑1: 开发调试

在开发者工具中如果直接使用微信小程序模式,调用wx.qy接口会提示不存在,需要安装企业微信小程序模拟器插件

  1. 添加企业微信模拟器插件

  1. 切换企业微信小程序模式

注意:某些api模拟器也不支持,需要真机调试

  1. 打开多场景调试

用企业微信扫小程序开发码,开启多场景调试。开启之后,在附件栏、工具栏、会话、工作台等场景打开此小程序时,都将使用本次扫码的开发版小程序来运行。

这个功能很好的解决了从其他入口无法进入开发版的问题,但开发调试的过程还是比较麻烦的

坑2: 企业微信端小程序登录流程和微信端小程序登录不同

一开始是想调用wx.qy.selectExternalContact获取外部联系人信息,本以为有现成的api可以解决很简单,但直接调用一直调不通,提示session过期,才看到这个api的调用前提:

调用前提:
必须先调用过wx.qy.login,且session_key未过期,开发者可调用checkSession 检查当前登录态
当前成员必须在应用的可见范围

wx.qy.loginwx.login的用法类似,但企微端的登录和微信端的登录是两套不通的流程

  • 微信端小程序登录
  • 企微端小程序登录

注:

  • 企业微信端也是支持wx.login的,如只需使用wx.xx(微信端api)不需要走企业微信登录。
  • 如需获取到当前企业微信用户在当前企业的员工身份信息、联系人信息等企业微信相关用户信息,则必须走企业微信登录流程。

坑3: access_token必须是与小程序关联的企业微信应用secret所获得

在调用jscode2session接口走登录流程的时候,一直提示没有权限,看了下接口的权限说明:

权限说明:
access_token必须是与小程序关联的企业微信应用secret所获得。

如果没有开发过企业微信应用,可能会对这句话费解,这个概念如果没有从头看起很容易混淆。

一开始用的是企业微信本身的secrect不行,后来在论坛上查询相关帖子说是要用小程序的secrect,但要注意这里指的secrect并不是小程序本身的AppSecrect,而是在企业微信后台创建的关联了小程序的应用的secrect,可以在企业微信后台应用管理中点击查看,发送Secret到企业微信中查看。

secret是企业应用里面用于保障数据安全的“钥匙”,每一个应用都有一个独立的访问密钥。分为以下几种:

  • 自建应用secret
  • 基础应用secret
  • 通讯录管理secret
  • 外部联系人管理secret

建议开发前先阅读文档了解清楚这些基本概念:https://developer.work.weixin.qq.com/document/path/90665

坑4: 客户联系API权限

如果在调用客户管理相关API提示没有权限的话,先来看一下接口的权限说明:

权限说明:

  • 企业需要使用客户联系secret或配置到可调用应用列表中的自建应用secret所获取的accesstoken来调用
  • 第三方应用需具有“企业客户权限->客户基础信息”权限
  • 第三方/自建应用只能获取到可见范围内的配置了客户联系功能的成员。

可以从以下方面排查:

  1. 获取accesstoken的secrect有没有用对
  • 一种方法是可以直接使用客户联系secrect:

  • 如果使用的是自建应用的secrect,还需要把当前应用配置到客户联系可调用列表:

  1. 获取客户联系的成员是否配置应用可见范围


是否配置了客户联系功能权限:

可以感受到企业微信为了保护客户的隐私信息,做了很多的权限控制,有一套完善的权限体系

  • 应用可见范围

  • 应用调用 OpenApi 权限

大致的调用流程如下图所示:

坑5: 企业可信ip

当已经用正确的secrect获取到accesstoken后,接口又提示了报错:

{
    "errcode": 60020,
    "errmsg": "not allow to access from your ip, hint: [xxx], from ip: xx.xx.xx.xx,...
}

需要在企业微信后台配置应用的可信ip,只有配置了可信ip,才能够调到企业微信的接口。

而在配置企业可信ip前,必须要先设置可信域名设置接受消息服务器URL (即使你并不需要用到…)

设置可信域名需完成域名归属认证,即在域名根目录上传小程序校验文件

配置完可信ip之后,终于能调通了。。。

总结

  1. 开始企业微信开发前先阅读官方文档开发指南,了解清楚基本概念、开发流程、配置方法,也便于后续阅读接口文档相关术语的理解。
  2. 开发者工具需安装企微插件用于调试部分企微api,对于工具无法模拟的场景需要真机开启多场景调试。
  3. 调用企业微信相关接口前,需仔细阅读接口的调用前提和权限说明。
  4. 调用openApi时,需要走企业微信内小程序登录流程、配置相关权限、配置企业可信ip。
  5. 不知道为啥接口调用失败可以使用错误码查询工具,在接口请求url里加上debug=1参数之后从接口返回的errmsg复制出hint值查询。
点赞 5
收藏
评论

3 个评论

  • 升
    09-24

    感谢。

    09-24
    赞同
    回复
  • Duke
    Duke
    08-17

    👍

    08-17
    赞同
    回复
  • Sean
    Sean
    08-07

    感谢分享

    08-07
    赞同
    回复
登录 后发表内容