参考资料微信JS-SDK说明文档
业务逻辑:
需完成微信朋友圈和微信好友分享,后台返回signature,其他参数需本前端萌萌定义
1.安装微信开发者工具
为方便以后开发debug,可以安装微信开发者工具
这里会显示微信分享的回调,如有错误可对应解决
2.获取公众号appid和设置IP白名单
登录微信公众平台
目录:开发>基本配置
白名单为IP地址
3.设置JS接口安全域名
此txt文件必须与分享链接目录相对应,例如分享链接是https://www.baidu.com/share,建议将此文件放在根目录https://www.baidu.com下
完成上述操作后,可模拟生成signature
自行构建vue环境,本萌萌用的是vue2,axios请求http接口数据
1.安装axios
npm install axios
2.安装微信sdk
npm install weixin-js-sdk
3.配置
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
debug 建议打开,上线的时候可关闭,此功能可在微信开发者工具上看到详细信息,也可在微信手机版中,以弹层的方式,弹出相对应的错误信息;
appId 参考上述方式获取;
timestamp,nonceStr可自行定义,如后台有返回数据可忽略
signature 后台会返回
4.utils.js
import axios from 'axios'
import wx from 'weixin-js-sdk'
//随机字符串
function randomString(len) {
len = len || 32;
var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
var maxPos = $chars.length;
var pwd = '';
for (var i = 0; i < len; i++) {
pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
}
return pwd;
},
export function wxShare() {
var timestamp = Date.parse(new Date()) + "",
nonceStr = randomString(32),
url = location.href.split('#')[0],
appId = '';
var title = '',// 分享标题
desc = '',// 分享文案
link = '', // 分享链接
imgUrl = '';// 分享图标
return axios.get(`后台接口链接`, { params: { timestamp, nonceStr, url } })
.then(res => res.data)
.then(data => {
var signature = data;
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: appId, // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp: timestamp, // 必填,生成签名的时间戳
nonceStr: nonceStr, // 必填,生成签名的随机串
signature: signature,// 必填,签名,见附录1
jsApiList:["onMenuShareTimeline", "onMenuShareAppMessage"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
wx.onMenuShareTimeline({
title: title, // 分享标题
desc: desc,
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
wx.onMenuShareAppMessage({
title: title, // 分享标题
desc: desc,
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
});
})
}
5.页面引入
<script>
import { wxShare } from '../../api/utils' //引入 wxShare 方法
export default {
mounted () {
wxShare().catch(error => Toast(error.message))
}
}
script>
此demo本萌萌试验过,无毒,如有不明白的地方,可在下方评论,本萌萌看到会回复的