参考文章:火辣辣前端博客
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、确认签名算法是否正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
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回调
欢迎转载,转载需带着文章出处链接~~
遇到问题在更新~~~~