安卓普通调用jsdk就不会存生微信签名失败的结果,上代码
share_weixn.js // jsdk m-ui组件已导入引用就行
//weixin-js-sdk应用
const wx = require('weixin-js-sdk')
import { Toast } from 'mint-ui'
export default {
data() {
return {
latitude:'',
longitude:'',
}
},
methods: {
wechatShare(info) { // 授权分享
const ts = this;
// 判断苹果手机
let _url = ''
if (window.__wxjs_is_wkwebview === true) {
_url = window.location.href.split('#')[0] || window.location.href
_url = _url.replace('')
} else {
_url = window.location.href
}
var u = navigator.userAgent;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isiOS) {
_url = JSON.parse(sessionStorage.getItem("share_link"))
}
// 访问后台接口获取微信参数
ts.$axios.post(this.baseURL + "/api/wx/jsapi", {url: encodeURIComponent(_url)}).then(res => {
wx.config({
debug: false,
appId: res.data.data.appId, // 必填,公众号的唯一标识
timestamp: res.data.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.data.nonceStr, // 必填,生成签名的随机串
signature: res.data.data.signature, // 必填,签名,见附录1
jsApiList: [
'previewImage',
'hideAllNonBaseMenuItem',
'showMenuItems',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'chooseWXPay'
]
});
}).catch(err => {
console.log(err)
})
wx.ready(() => {
const share_title = info.title
const share_desc = info.desc
const share_link = info.link
const share_img = info.img
wx.showOptionMenu()
wx.onMenuShareTimeline({
title: share_title, // 分享标题
link: share_link, // 分享链接
imgUrl: share_img, // 分享图标
success: function () {
Toast('已成功分享到朋友圈')
},
cancel: function () {
Toast('已取消分享')
}
})
wx.onMenuShareAppMessage({
title: share_title, // 分享标题
desc: share_desc, // 分享描述
link: share_link, // 分享链接
imgUrl: share_img, // 分享图标
success: function () {
Toast('已成功分享给您的朋友')
},
cancel: function () {
Toast('已取消分享')
}
})
})
},
}
}
var u = navigator.userAgent;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isiOS) {
_url = JSON.parse(sessionStorage.getItem("share_link"))
}
share_link在session做一个存储在刷新页面 和index.vue页面调用替换掉 _url
在启用微信分享的时候调用成功
ios的针对首次进入的快壳不会改变用记录的方法可以有效的解决分享的问题。
还有遇到图片跨域问题在链接打开图片这些需要跨域后台https支持就行