企业微信开发的操作:企业微信JS-SDK权限验证
企业微信开发的操作:企业微信JS-SDK权限验证agentId:应用IDlet { data } = await getAgentTicket( locationUrl agentId );参数说明:timestamp,nonceStr,signature签名生成一般让后端是返回给前端调用后端请求,生成timestamp,nonceStr,signature如下:这里是一个后端请求,只需要注意参数就可以
步骤一: 引入js-sdk相关js
<script src="//res.wx.qq.com/open/js/jweixin-1.2.0.js "></script>
步骤二: 通过wx.config注入权限验证配置(第一次握手config注入的是企业的身份与权限)
wx.config({
beta: true // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true // 开启调试模式 调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '' // 必填,企业微信的corpID
timestamp: // 必填,生成签名的时间戳
nonceStr: '' // 必填,生成签名的随机串
signature: '' // 必填,签名,见 附录-JS-SDK使用权限签名算法
jsApiList: [] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
});
需要主要点:
appId 对应的是企业微信的corpID
timestamp,nonceStr,signature签名生成一般让后端是返回给前端
调用后端请求,生成timestamp,nonceStr,signature如下:
这里是一个后端请求,只需要注意参数就可以
let { data } = await getAgentTicket( locationUrl agentId );
参数说明:
agentId:应用ID
locationUrl:授权访问的页面URL
步骤三:通过agentConfig注入应用权限
async wxConfig (state) {
try {
let { data } = await getAgentTicket( locationUrl agentId );
let { timestamp nonceStr signature } = data;
wx.agentConfig({
beta: true // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: true
corpid: state.corpId // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: state.agentId // 必填,企业微信的应用id (e.g. 1000247)
timestamp // 必填,生成签名的时间戳
nonceStr // 必填,生成签名的随机串
signature // 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: [
"sendChatMessage"
"getContext"
"shareToExternalMoments"
"getCurExternalContact"
"openEnterpriseChat"
"shareToExternalContact"
"shareToExternalChat"
"getCurExternalChat" //获取当前客户群的群ID
] //必填
success: (res) => {
// console.log(res)
// 回调
// alert("agentId成功:");
state.agentConfigStatus = true;
}
fail: (res) => {
console.log("agent config 失败: " res);
//alert("agentId失败:" JSON.stri.jpgy(res));
if (res.errMsg.indexOf("function not exist") > -1) {
alert("版本过低请升级");
}
}
});
} catch (error) {
console.log(error);
}
调用agentConfig的注意事项
- agentConfig与config的签名算法完全一样,但是jsapi_ticket的获取方法不一样(后端注意)
- agentConfig与config的签名算法完全一样,但是jsapi_ticket的获取方法不一样(后端注意)
- 当前页面url中的域名必须是在该应用中设置的可信域名。
- 当前页面url中的域名必须是在该应用中设置的可信域名。
- 当前页面url中的域名必须是在该应用中设置的可信域名。
友情提醒:
开发时候我们肯定会有多套应用环境的部署(测试,生产),所以我们需要在企业后台进行多个应用的创建,然后一些可变动的参数尽量动态获取 列如,执行agentConfig(AgentId这个是根据应用走的参数),到此我们要进行前面的步骤完成一个应用,这里隐藏了一个不为认知的坑,就是多个环境调试时候,会一直遇到 getCurExternalContact:fail_nopermission,那么问题来了,步骤都对了,agenConfig也是ok,就是获取外部联系人方法 不可用,这里就去找到客户联系配置外部联系人关联的应用,如图
到这里就就可以进行正常的多套环境应用调试。