最近发现之前写好的wx.config报错了,在安卓手机正常,在ios上报错invalid signature。去社区找了一下发现ios14以上的版本都会报invalid signature。导致配置的自定义分享都没有生效
最后解决方法:
1.依赖必须是最新的这个,另外一个1.0的jsapi不能引用,否则两个在一起默认会用jsapi的(坑) "weixin-js-sdk": "^1.6.0" 2.在App.vue中的mounted中将首次启动地址存储 sessionStorage.setItem('scanCodeUrl', location.href) 3.在获取wx.config配置各种参数通过上面存储的url地址去进行校验
先判断当前手机版本是不是ios14及以上,如果是并且不是企业微信环境就用上面存储的url,否则就用当前的url。如果在企业微信环境用了上面存储的url,企业微信里面自定义的分享无效
isIos14AndMore () {
// 判断ios手机版本号是否大于14,大于14就拿app.vue存储的url,否则拿当前页面的url
try {
const str = navigator.userAgent.toLowerCase()
const ver = str.match(/cpu iphone os (.*?) like mac os/)
if (!ver) {
return false
} else {
return Number(ver[1].split('_')[0]) >= 14
}
} catch (e) {
console.log(e)
return false
}
},
setConfig () {
const ua = navigator.userAgent.toLowerCase()
// 是否是企业微信环境,
const isQyWechat = ua.match(/WxWork/i) == 'wxwork'
const url = sessionStorage.getItem('scanCodeUrl')
const isIos14AndMore = this.isIos14AndMore()
const that = this
const req = {
url: (isIos14AndMore && !isQyWechat) ? url : window.location.href.split('#')[0].toString()
}
// 不是企业微信环境才加这两个api
const wechatApi = isQyWechat ? [] : [ 'updateAppMessageShareData',
'updateTimelineShareData' ]
getSourceTicket(req)
.then((res) => {
const data = res.data
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
appId: data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.nonceStr, // 必填,生成签名的随机串
signature: data.signature, // 必填,签名,见附录1
jsApiList: [
'hideMenuItems',
'shareAppMessage',
'onMenuShareAppMessage',
'onMenuShareWechat',
'onMenuShareTimeline',
...wechatApi
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
wx.ready(function (res) {
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中
console.log('ready', res)
})
wx.error(function (res) {
console.log('error', JSON.stringify(res))
})
})
.catch((err) => {
console.log(err)
})
},
分享出去是链接地址:
搞定后发现分享正常了,但是分享出去的是链接地址,没有展示我所自定义的标题描述
原因是:如果你是直接点链接进的H5,分享就只有一个链接。如果你是扫码进的H5,那分享就是正常的
参考链接地址:
wx.config提示invalid signature? | 微信开放社区
ios14 wx.config报invalid signature? | 微信开放社区
updateAppMessageShareData onMenuShareTimeline 分享之后只显示链接 | 微信开放社区