开发前必读:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html
使用步骤
微信开放标签使用步骤与微信JS-SDK类似,也需要引入JS文件等步骤。如果是公众号身份的网页,需要绑定安全域名,如果是使用小程序云开发静态网站托管的小程序网页,则不需绑定安全域名即可直接使用(即跳过下面"步骤一:绑定安全域名")。
一、绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。
二、安装/引入文件
插件方式:
npm i weixin-js-sdk -S
引入js文件方式:
在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.6.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)。
三、全局引入
挂载到Vue原型
// main.js
import wx from 'weixin-js-sdk'
Vue.prototype.$wx= wx
四、配置
通过config接口注入权限验证配置并申请所需开放标签。
与使用JS-SDK配置方式相同,所有需要使用开放标签的页面必须先注入配置信息,并通过openTagList字段申请所需要的开放标签,否则将无法使用(同一个url仅需调用一次)。开放标签的申请和JS接口的申请相互独立,因此是可以同时申请的。
mounted() {
this.createJsapiSignature()
}
createJsapiSignature() {
// 根据接口返回config信息
this.$axios
.createJsapiSignature({
url: window.location.href.split('#')[0]
}).then(res => {
let result = res.data.data
this.$wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,
//可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: result.appId, // 必填,公众号的唯一标识
timestamp: result.timestamp, // 必填,生成签名的时间戳
nonceStr: result.nonceStr, // 必填,生成签名的随机串
signature: result.signature, // 必填,签名
jsApiList: ['chooseWXPay','chooseImage', 'previewImage'], // 必填,需要使用的JS接口列表
openTagList: ['wx-open-launch-weapp'] // h5跳小程序
})
this.$wx.ready(() => {
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
// config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
// 则须把相关接口放在ready函数中调用来确保正确执行。
// 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
})
this.$wx.error(function (res1) {
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
//也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
}).catch(err => {
console.log("err", err)
})
},
五、使用
<wx-open-launch-weapp
id="launch-btn"
username="gh_xxxxxxxx"
path="pages/home/index?user=123&action=abc"
>
<!--插槽-->
<script type="text/wxtag-template">
<style>.btn { padding: 12px }</style>
<button class="btn">打开小程序</button>
</script>
</wx-open-launch-weapp>
<script>
var btn = document.getElementById('launch-btn');
btn.addEventListener('launch', function (e) {
console.log('success');
});
btn.addEventListener('error', function (e) {
console.log('fail', e.detail);
});
</script>
image.png
通过path传递的参数将在小程序的onLoad生命周期的options参数里面拿到。
六、注意
在Vue、React等框架中使用
插槽模版的内容和样式与主页面相互隔离,使用数据驱动的方式去更改插槽模版中的内容和样式将不会得到更新。
在Vue中使用
开放标签属于自定义标签,Vue会给予未知标签的警告,可通过配置Vue.config.ignoredElements
来忽略Vue对开放标签的检查。
<wx-open-audio
:title="title"
src="http://xxx.xxx.com/.mp3"
@canplay="canplay"
@pause="pause"
@seeked="seeked"
>
<script type="text/wxtag-template">
<button>播放</button>
</script>
</wx-open-audio>
网友评论