前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >企业微信JS-SDK开发(一)------通过config接口注入权限验证配置

企业微信JS-SDK开发(一)------通过config接口注入权限验证配置

原创
作者头像
用户4191150
修改2021-08-10 18:16:36
2.4K0
修改2021-08-10 18:16:36
举报

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。

通过js-sdk可以在企业微信内实现众多功能,如调出通讯录、调出摄像头、隐藏部分按钮等。

使用js-sdk分为三步:

1.开发页面引入JS文件

html页面加入

<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>

注意:企业微信之前为微信企业号,微信企业号同样有js-sdk工具包,但版本不同,混用可能会出现问题。

2.通过config接口注入权限验证配置

wx.config({ beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '', // 必填,企业微信的corpID timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,见附录1 jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });

这边beta、debug都有注释,按需填写。appid我前一篇文章有写在哪边获取,不知道可以去看下。timestamp和nonceStr都是用来生成signature签名的,因此要和后台生成签名的参数一致。signature为验证签名,获取方法附录1有写,具体为:

第一步获取jsapi-ticket

请求方式:GET(HTTPS

请求URL:https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN

方式和获取access-token一致

返回结果格式为

{ "errcode":0, "errmsg":"ok", "ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA", "expires_in":7200 }

提取出ticket即可,注意此接口有频率限制,超过会被封一段时间,因此做好本地缓存

第二步签名算法

将jsapi-ticket、noncestr、timestamp、url根据算法得出签名

此处url为当前页面的url不清楚可以在页面通过

alert(location.href.split('#')[0]);

打印出来对照一下

签名java代码

public static String getsig(String noncestr,String jsapi_ticket,String timestamp,String url){ String[] paramArr = new String[] { "jsapi_ticket=" + jsapi_ticket, "timestamp=" + timestamp, "noncestr=" + noncestr, "url=" + url }; Arrays.sort(paramArr); // 将排序后的结果拼接成一个字符串 String content = paramArr[0].concat("&"+paramArr[1]).concat("&"+paramArr[2]) .concat("&"+paramArr[3]); String gensignature = null; try { MessageDigest md = MessageDigest.getInstance("SHA-1"); // 对拼接后的字符串进行 sha1 加密 byte[] digest = md.digest(content.toString().getBytes()); gensignature = byteToStr(digest); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } // 将 sha1 加密后的字符串与 signature 进行对比 if (gensignature != null) { return gensignature;// 返回signature } else { return "false"; } } /** * 将字节数组转换为十六进制字符串 * * @param byteArray * @return */ private static String byteToStr(byte[] byteArray) { String strDigest = ""; for (int i = 0; i < byteArray.length; i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } /** * 将字节转换为十六进制字符串 * * @param mByte * @return */ private static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; }

成功返回signature

jsapilist为需要调用的api接口列表,格式为

['hideAllNonBaseMenuItem','chooseImage','previewImage','uploadImage','selectEnterpriseContact','openEnterpriseChat']

验证成功后,如果开启了调试模式,页面会打印

{"errMsg":"config:ok"}

后面可以开始调用其他接口

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档