企业微信自建应用审批流程踩坑全过程(uni-app)
企业微信自建应用审批流程踩坑
1. 引入企业微信sdk:
1-1. 因为uni-app遵循Vue的单文件组件 (SFC) 规范,不能直接在页面上引入
在index.html中引入:
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js" type="text/javascript"></script>
并在manifest.json中启用index.html:
1-2. 完成1-1后发现报错wx.config is not a function
不能使用 wx.config 和 wx.agentconfig 调用,而是使用 jWeixin.config() 和 jWeixin.agentconfig()
1-3. 发现页面和一开始做的不一样,样式乱了
在index.html中添加:
<link rel="stylesheet" href="./static/index.css" />
另:index.html中这一句代码在我这里会导致报错,所以注释掉了,好像也没有影响
<script type="module" src="main.js"></script>
2. 企业微信工作台弹窗
原因:debug参数沿用官方示例设为true。官方解释此状态为:
开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
3. wx.agentconfig报错
3-1. 在开发者工具中调试网页,发现结果如下:
{"errMsg":"config:ok","verifyJsApiList":[]}
原因:造成这个报错的原因好像挺多?通过查询前人经验帖,发现我这里有一部分犯懒了,给wx.config和wx.agentConfig的时间戳和随机串一样,但改过之后依然有这个结果(。)感觉似乎没有对后续操作有什么影响
3-2. 在开发者工具中调试网页,发现报错如下:
{err_Info: "fail", errMsg: "agentConfig:fail", hint: "Hint: '0402174502:vr89lewqaj:-30001'. More info at…://open.work.weixin.qq.com/devtool/query?e=-30001"}
在企业微信工作台中是弹出类似这样的弹窗:
原因:据说是因为开发者工具不支持这个接口,真机时没有问题。通过弹窗测试结果,确实ok
4. 未解决问题
4-1. wx.agentConfig的signature参数,使用后端计算传回的值会报错40093,但是使用前端sha加密的值(与后端传值一样)就可以成功调起审批窗口
4-2. 后续发现后端写了调用方法emmm就,白忙活(不是)一场
===================二编(留段前端代码)
async agentConfigFunc() {
var URL = location.href.split('#')[0];
// ActionGetJsdkConfig: 调用后端接口获取微信jsk配置信息
// JsType:1-企业 2-应用
// 1- https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token={AccessToken}
// 2- https://qyapi.weixin.qq.com/cgi-bin/ticket/get?access_token={AccessToken}&type=agent_config
this.jsdkConfig = await this.ActionGetJsdkConfig({JsType: 2, url: URL});
var agentSignature = "jsapi_ticket=" + this.jsdkConfig.JsTicket + "&noncestr=" + this.jsdkConfig.NonceStr + "×tamp=" + this.jsdkConfig.Timestamp + "&url=" + URL;
var AGENTSIGNATURE = sha1(agentSignature);
console.log(this.jsdkConfig.Signature === AGENTSIGNATURE);
await jWeixin.agentConfig({
corpid: this.jsdkConfig.Corpid, // 必填,企业微信的corpid,必须与当前登录的企业一致
agentid: this.jsdkConfig.AppId, // 必填,企业微信的应用id
timestamp: this.jsdkConfig.Timestamp, // 必填,生成签名的时间戳
nonceStr: this.jsdkConfig.NonceStr, // 必填,生成签名的随机串
signature: AGENTSIGNATURE, //this.jsdkConfig.Signature,// 必填,签名,见附录-JS-SDK使用权限签名算法
jsApiList: ['agentConfig', 'thirdPartyOpenPage'], //必填,传入需要使用的接口名称
debug: 1,
success: (res) => {
// 回调
jWeixin.invoke(
'thirdPartyOpenPage',
{
"oaType": "10001",// 操作类型,目前支持:10001-发起审批;10002-查看审批详情
"templateId": "xxxxxxxxxxxx",// 发起审批的模板ID,在自建应用-审批接口中创建模板可获取。
"thirdNo": "thirdNo" + new Date().getTime(),// 审批单号,由开发者自行定义,不可重复。
"extData": {
'fieldList': [
{
'title': '备注',
'type': 'text',
'value': this.Remarks,
},
],
}
},
(res) => {
// 输出接口的回调信息
/* uni.showModal({
title: '提交审批 success 回调的信息',
content: JSON.stringify(res)
}) */
}
);
},
fail: (err) => {
uni.showModal({
title: 'agentConfig fail',
content: JSON.stringify(err)
})
if (err.errMsg.indexOf('function not exist') > -1) {
alert('版本过低请升级')
}
}
})
},
更多推荐
所有评论(0)