JS-SDK分享网页到微信遇到的坑
发布日期:2021-10-03 12:40:15 浏览次数:8 分类:技术文章

本文共 2002 字,大约阅读时间需要 6 分钟。

现在开发大多都需要用到微信分享,推广宣传APP做得有多牛逼,然鹅,微信分享不是简单的越塔五杀就能搞定的,需要前后台的协同才能打死这个野怪,开发中遇到的重大问题是一直提示config:invalid signature,先来说说大体开发流程,再说说这问题是怎么解决的:

1、绑定域名

域名必须ICP备案,在微信公众平台的js域名接口处绑定该域名。注意:绑定的域名或者路径不允许有下划线,因为公司的项目名带有下划线,而项目名已经被APP之前版本引用,所以不能通过修改项目名解决,于是想了另外一个办法:绑定一个和应用同级目录的路径,把需要分享的网页放到这个路径下面来访问,这时候会存在一个问题:分享页面找不到一些项目资源,这时候可以通过修改页面的相对路径来解决。

2、绑定域名的后台生成签名信息,包括appId,timestamp,noncestr,signature,校验签名信息是否有误地址:,如果signature一致则说明签名无误。

3、分享的网页引入JS文件

http协议域名引用微信接口地址 ,
https协议域名引用微信接口地址
经测试两个地址都可以正常分享。

4、通过config接口注入权限验证配置

5、通过ready接口处理成功验证

页面拿到服务器返回的签名信息后,调用微信的wx.ready({})方法接口实现分享功能,代码如下(这段代码放在标签最下面):

wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 wx.onMenuShareTimeline({ title: shareTitle, // 分享标题 desc: shareDesc, // 分享描述 link: url, // 分享链接 imgUrl: shareImgUrl, // 分享图标 success: function () {
// 用户确认分享后执行的回调函数 }, cancel: function () {
// 用户取消分享后执行的回调函数 } }); wx.onMenuShareAppMessage({ title: shareTitle, // 分享标题 desc: shareDesc, // 分享描述 link: url, // 分享链接 imgUrl: shareImgUrl, // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function () {
// 用户确认分享后执行的回调函数 }, cancel: function () {
// 用户取消分享后执行的回调函数 } }); });

坑:

1、签名错误:这个可以把后台服务器生成的签名信息放到地址上面去校验signature是否一致,后台生成签名的方法在网上很多,在这里就不多说了。
2、确认签名没错后,仍然弹框config:invalid signature,100%是URL有问题,这里的url就是分享页面的url,有三个地方必须完全一致,
1)var url = location.href;
2)后台接收到的url;
3) link: url;
这三个url必须一致,后台接收到的url会自动把参数拼接字符&转义成&amb;,所以要替换成&,确保和前端的URL一致即可。

至此,问题解决!啦啦啦

转载地址:https://blog.csdn.net/kookkj/article/details/78591224 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:接口压力测试软件jmeter
下一篇:Tomcat网站http访问转换为https访问

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月10日 06时46分12秒