//获取签名信息 const getAccessToken = () => { const signType = 'MD5', //签名方式SHA1,MD5 appId = 'wx68c38401877ba604', appName = '4evol8uuwyuxsims', //应用标识,此标识是提前分配给调用系统的。 privateKey = 'd3db27c0-26a0-4d8a-8707-65f374e02c7a', timeStamp = Date.now().toString(), //时间戳 nonce = randomString(16), //随机数 signature = signStr(nonce, timeStamp, appName, privateKey, signType), //生成私域签名 title = document.title, desc = document.title, imgUrl = 'https://www.xacom.edu.cn/_upload/tpl/00/8a/138/template138/images/WXIcon.jpg'; let access_token = JSON.stringify({ signType, appName, timeStamp, nonce, signature }); access_token = CryptoJS.enc.Utf8.parse(access_token); access_token = CryptoJS.enc.Base64.stringify(access_token); return { appId, appName, privateKey, timeStamp, nonce, signature, access_token, title, desc, imgUrl }; }; window.addEventListener('DOMContentLoaded', async () => { const useConfig = getAccessToken(); const { appId, access_token } = useConfig; const url = `/_weixinApi/ordinary/jssdk?appid=${appId}&access_token=${access_token}&initJsApi=false`; fetch(url) .then(e => { return e.text(); }) .then(res => { //处理返回数据 let requestData = res.slice(res.indexOf('{')); requestData = JSON.parse(requestData); //wx真实签名替换掉私有签名 requestData = Object.assign(useConfig, requestData); WXconfig(requestData); }) .catch(err => console.log(err)); }); //初始化js-sdk 更新分享配置 function WXconfig(data) { const { appId, timestamp, nonceStr, signature, title, desc, imgUrl } = data; wx.config({ debug: false, appId: appId, timestamp: timestamp, nonceStr: nonceStr, signature: signature, jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'], }); wx.ready(function () { console.log('ready'); //需在用户可能点击分享按钮前就先调用 wx.onMenuShareTimeline({ title: title, desc: desc, link: window.location.href, imgUrl: imgUrl, success: function () { console.log('朋友圈成功', window.location.href); }, }); wx.onMenuShareAppMessage({ title: title, desc: desc, link: window.location.href, imgUrl: imgUrl, success: function () { console.log('联系人成功', window.location.href); }, }); }); wx.error(function (err) { console.log('wxError:', err); }); } //随机字符串 function randomString(e = 32) { const t = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678', a = t.length; let n = ''; for (i = 0; i < e; i++) n += t.charAt(Math.floor(Math.random() * a)); return n; } //私域签名 function signStr(nonce, timeStamp, appName, privateKey, authType) { const tmpStr = [nonce, timeStamp, appName, privateKey].sort().join(''); if (authType == 'MD5') { return CryptoJS.MD5(tmpStr).toString().replace(/[\s]+/g, '').toUpperCase(); } return CryptoJS.SHA1(tmpStr).toString().replace(/[\s]+/g, '').toUpperCase(); }