在创建saas套件的时候,要注意的一点是需要填写一个callBackUrl,会调用这个url并接收到我们返回的特定信息,用来验证你的后台程序是否正常。所以在创建套件之前需要先把后台应用跑起来。
目前微信套件分为两种,普通应用套件和通讯录套件,通讯录套件只能有一个,用来操作客户企业号通讯录。客户企业号如果安装了通讯录套件,则无法通过其他方式修改通讯录,包括管理员手动修改和委托给其他第三方修改。(题外话,用api操作企业微信通讯录的时候,如果某用户已久关注了该企业号,将无法通过用户本人以外的任何方式进行修改,但是使用api的update接口进行请求的时候,虽然无法修改,但是微信的返回参数显示的确是成功:erroeCode:0)
微信对于callBackUrl的回调分为GET和POST两种方式,GET方式用来验证URL的有效性,需要用创建套件时候设置的参数和企业号CORPID来解密信息,并且返回信息。主要用在创建套件的时候。
wxcpt = new WXBizMsgCrypt(token, encodingAesKey, corpId);
sEchoStr = wxcpt.VerifyURL(msg_signature, timestamp, nonce, echostr);
// 验证URL成功,将sEchoStr返回POST方式则是推送套件事件,解密后我们可以得到具体是什么事件,现在代码中主要解析了以下几种事件:
if(InfoType.equals("suite_ticket")){
//推送suite_ticket
...
}else if (InfoType.equals("change_auth")){
//授权变更
...
}else if (InfoType.equals("cancel_auth")){
//取消授权
...
}else if (InfoType.equals("create_auth")){
//新授权,先获取套件token
//用套件token去将临时授权码换取永久授权码,同时可以拿到accessToken和企业corpId
...
}- suite_ticket每10分钟推送一次,后续对客户企业微信的操作都需要使用到这个
- 通讯录套件必须在取消通讯录授权后才会推送取消授权事件,如果只是清空应用只会推送授权变更事件
- 其他套件在清空应用后会推送取消授权事件,删掉一个而不删光应用的话,会推送授权变更事件