微信jssdk自定义分享问题总结

3,433 阅读3分钟

参考文章:火辣辣前端博客

1 分享功能前提条件必须保证通过config接口注入权限验证配置成功

需要将必备的数据配置成功,并且需要将你用到的签名注入在jsApiList数据里

参考文章

wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名
    jsApiList: [
                "onMenuShareTimeline",
                "onMenuShareAppMessage",
                "onMenuShareQQ",
                "onMenuShareWeibo",
                "onMenuShareQZone"
    ] // 必填,需要使用的JS接口列表
});

2 调试模式报错:invalid signature 很明显签名错误

当wx.config的debug设为true的话打开页面会显示签名是否成功,若显示 invalid signature,则是签名报错,这时候你就需要去检查你的签名配置

解决办法
1、确认签名算法是否正确,可用 mp.weixin.qq.com/debug/cgi-b… 页面工具进行校验。
2、确认config中noncestr, timestamp与用以签名中的对应noncestr, timestamp一致。
3、确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
4、确认url是页面完整的url,包括GET参数部分。

参考文章

3 微信分享非安全域名链接导致分享失败

微信后面做了调整,参考文章,链接域名或路径必须与当前页面对应的公众号JS安全域名一致,否则将调用失败

获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
wx.onMenuShareTimeline({
    title: '', // 分享标题
    link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl: '', // 分享图标
    success: function () { 
        // 用户确认分享后执行的回调函数
    }
});

也就是说,你的link必须是和你的公众号js安全域名一致。例如,当前页面是 http://www.abc.com/123,其公众号对应的JS安全域名为 www.abc.com 以及 www.xyz.com,则分享自定义链接 http://www.abc.com/456 可以成功,分享 http://www.xyz.com/123 或 http://www.def.com/123 均将失败。

如果说你分享跳转页面必须是非安全域名下的链接,那你可以单独做一个转发页面,通过转发链接进入这个转发页面后,再直接跳转到拼接好的授权页面。

参考代码:非安全链接分享解决办法

4 需要对公众号进行认证

公众号平台是有权限的,你要确保你的公众号已经获得了分享权限功能。因为微信暂不支持个人类型的公众帐号申请微信认证。所以此类公众号无需进行认证就有分享权限,企业号什么的就自行去认证吧。

参考文章

5分享link链接里面不要是拼接的地址,直接写成固定链接

比如 link对应参数比如:‘http://baidu/a/b/c/x/xx/x ’不要写成‘http://baidu/‘+ url+'/a/b/c/x/xx/x'

参考文章

6 link参数带中文或者特殊字符

带中文的url在安卓中应该也是会出问题的,但是安卓会自动encodeURIComponent(),而ios不会。所以会出现安卓自定义可以正常分享,但是ios就不行。

7 微信官方取消了cancel回调

还有一点需要注意,就是微信为了杜绝一些商家的强制分享,取消了cancel回调函数,也就是说,只要用户点击了分享按钮,就会出发success回调

参考文章

欢迎转载,转载需带着文章出处链接~~

遇到问题在更新~~~~