这个功能比较有技巧性,陷阱也比较多,我先说一下我的开发过程,然后总结一下遇到的问题。
准备
1.您需要在微信小程序管理后台关联企业微信账号
2.在企业微信管理后台设置应用主页
3.在微信企业管理后台设置信任域名信息(能调用JS-SDK并跳转到小程序的信任域名是必须配置的,可以填写上面的应用首页地址,如果有其他地址也可以填写,我这里爬取了很久)
4.在企业微信管理后台配置应用信任IP(即白名单;结束)
以上都配置好之后就可以开始工作了
1.在h5页面中引用这几个js文件
<script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.9.1/vconsole.min.js">script> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js" referrerpolicy="orgin">script> <script src="https://open.work.weixin.qq.com/wwopen/js/jwxwork-1.0.0.js" referrerpolicy="orgin">script>
2.代码如下
new VConsole()//手机调试的控制台 let tokenTicket = getAccessTokenAndTicket(); let corpId = tokenTicket.corpid; //企业ID let agentId = 1000039; //应用ID, agentId, 必须是整型 let appSecret = tokenTicket.corpsecret; // 应用secret let token = tokenTicket.token; //有效期2小时 let ticket = tokenTicket.ticket; //有效期2小时 let timeStamp = new Date().getTime(); let obj = { jsapi_ticket: ticket, //应用ticketg noncestr: '10014', //随机字符串, wx.agentConfig内的nonceStr值要与此值一致 timestamp: timeStamp, //时间戳, wx.agentConfig内的timestamp值要与此值一致 url: window.location.href, //当前网页的url } let signature = getSignature(obj); //签名权限 wx.agentConfig({ corpid: corpId, // 必填,企业微信的corpid,必须与当前登录的企业一致 agentid: 1000039, // 必填,企业微信的应用id timestamp: timeStamp, // 必填,生成签名的时间戳 nonceStr: obj.noncestr, // 必填,生成签名的随机串 signature: signature,// 必填,签名,见附录-JS-SDK使用权限签名算法 jsApiList: ['launchMiniprogram'], //必填 success: function(res) { console.log(res + "agentConfig成功回调"); wx.invoke('launchMiniprogram', { "appid" : "需跳转的小程序appid", // 需跳转的小程序appid "path" : "pages/index/index", // 所需跳转的小程序内页面路径及参数。非必填 }, function(res) { if(res.err_msg == "launchMiniprogram:ok") { // 正常 wx.closeWindow(); } else { // 错误处理 } } ); }, fail: function(res) { console.log("agentConfig失败回调") if(res.errMsg.indexOf('function not exist') > -1){ alert('版本过低请升级') } } }); function getSignature(obj) { let sign = "jsapi_ticket=" + obj.jsapi_ticket + "&noncestr=" + obj.noncestr + "×tamp=" + obj.timestamp + "&url=" + obj.url; return sha1(sign); } function getAccessTokenAndTicket() { let json = ""; $.ajax({ url: "你后台地址,给你返回ticket等信息的地址", type: "POST", data: { url: window.location.href }, async: false, success: function(resp) { console.log(resp); json = JSON.parse(resp.result); }, error: function(a, b, c) { return a; } }) return json }
问题结论:
这个是你的签名,不要自己查这些信息,只要你网上地址的控制台打印成功,你就可以在手机上试试,应该没问题。
如果在上可以正常唤醒,但在iOS手机上却报这个错
:不是(靠近'...wx....')
然后你可以在wx.外面添加一个代码块并设置成就。
如果还是不行的话,替换js文件
代替
以上所有方法均已测试有效
最终效果:
打开企业微信小程序
如果您有任何疑问,请在下方留言。