从配置文件中我们可以看到,有三个字段需要我们在前端进行配置 。尤其重要的便是签名 。
那么这三个字段如何生成呢?总不能在前端进行生成吧 。当然放在后端了,前端只需要往后端进行请求就行了 。
那么后端怎么做呢?
首先需要拿到access_token 。
请求地址为
`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=yourappid&secret=yoursecret`
请求方式为GET就行 。返回内容为json格式,这个可以通过微信给的调试工具进行调试查看返回内容 。
在线接口调试工具
然后再通过access_token来获取ticket(门票???)
"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi" % (access_token)
最后就是生成签名了,生成签名的话,还是比较有趣的 。
sha_str = "jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s" % (ticket, noncer, timestamp, request_url);
我们需要使用前面获取到ticket noncer,timestamp,request_url四个字段来拼接成一个字符串 。最后通过sha加密来作为signature(签名) 。
noncer:生成15位的随机字符串,可以是字母和数字timestamp:时间戳 request_url:目标网页的链接 该链接是动态的比如包含了分享者的ip地址之类的,建议从前端将链接传过来
# 获取15位随机字符串def get_noncer():str_list = [random.choice(string.digits + string.ascii_letters) for i in range(15)]random_str = ''.join(str_list)return random_str
# 获取时间戳def gettimestamp():return int(time.time())
sha加密字符串def getsha(sha_str:str):sha = hashlib.sha1(sha_str.encode('utf-8'))encrypts = sha.hexdigest()return encrypts
当然appid也建议从后端进行返回,不放在目标网页里面 。
这样就获取到了我们前端所需的配置数据了 。
2.4 前端分享配置
首先引入jssdk
这里建议这种引用方式,不要下载后放在服务器 。
然后在ready函数里面配置微信分享信息 。这里建议ready函数里面先访问后端接口先请求配置信息,拿到配置数据,再进行配置
wx.config({ ebug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印 。打印标识config: appId: appId, // 必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: nonceStr, // 必填,生成签名的随机串 signature: signature, // 必填,签名,见附录1 jsApiList: ['onMenuShareTimeline', // 分享朋友圈'onMenuShareAppMessage', //好友或群'onMenuShareQQ', //qq'onMenuShareQZone' //qq空间] // 分享好友 // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });
当然,还可以有腾讯微博可以分享,这里就不加进去了,具体视情况而定 。
wx.onMenuShareQQ({title: '', // 分享标题link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: encodeURI("imgurl"), // 分享图标desc: "描述",success: function() {// 用户确认分享后执行的回调函数alert("分享到qq成功");},cancel: function() {// 用户取消分享后执行的回调函数alert("取消好友分享"); }});
同等方式配置朋友圈,微信好友,qq空间等方式 。这些配置要放在ready函数里 。
wx.ready(function() {// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行 。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中 。//朋友圈 wx.onMenuShareTimeline({}); .....
到这里前端也配置完成了 。
然后当然是放到服务器上进行尝试了哦 。
3.相关问题解决 1.前端配置成功,配置信息也正确为啥还是出现失效的问题?
首先,确保微信打开你的链接后,你的链接不会被改变 。本来自己分享的链接是,但是在微信打开后变成了?from=?? 。反正就是后面被添加了一些字段 。
解决方法:将链接后面多余的字段剔除,然后重新加载页面 。再将链接post后端进行配置信息获取 。
2. 页面出现布局混乱
有时候,页面会出现布局混乱,就好像css没加载进来一样 。这是因为微信缓存机制的问题 。
- 电脑安卓模拟器哪个最好用 稳定的安卓模拟器推荐
- 目前性价比高的安卓手机 2023安卓手机性能排行榜前十名
- 苹果怎么打开设置助理从安卓设备转移数据
- 目前最好用的安卓手机 2023年手机品牌排行榜前十名
- 苹果手机换安卓手机如何一键换机
- 安卓通话录音设置方法 荣耀手机录音功能在哪里找
- 一键开启root权限方法 怎么root安卓手机教程
- 安卓设备的操作方法 小米手机要关闭哪些设置
- 安卓之间数据传输的方法 oppo的东西怎么导入新手机
- 安卓手机上最好的虚拟机推荐 免费的安卓虚拟机哪个最好用