公众号开发二三事(二)-----分享功能补充篇
前篇废话很多,作为程序员还是讲具体功能实现吧。
在“微信二次分享功能开发笔记”博客中我完整的把分享功能怎么实现讲了一遍,其实那个是我在工作中的笔记。是在工作中遇到问题后,一步一步去修复然后总结出来的,这样的结果可能就是因为太深入而无法看到全局,所以导致这次照葫芦画瓢以为顺理成章,结果还是差点栽了。
关于获取access_token,还有jsapi_ticket各种数据以及在公众号上的各种配置,在网上各种博客包括我的博客“微信二次分享功能开发笔记”,以及微信官方开发文档都有详细的说明。就不在这里累叙,我想讲的是这些步骤走完之后你仍然发现分享没有成功需要注意的几个点。当然这是我自己走过的坑,肯定不能解决所有问题,所以,大家懂的,有其他问题可以在博客下方留言,咱们一起探讨。
首先,我们看微信的配置:
1 wx.config({ 2 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来 3 appId: data.appId, // 必填,公众号的唯一标识 4 timestamp: data.timestamp, // 必填,生成签名的时间戳 5 nonceStr: data.nonceStr, // 必填,生成签名的随机串 6 signature: data.signature,// 必填,签名,见附录1 7 jsApiList: [ 8 "onMenuShareTimeline", 9 "onMenuShareAppMessage", 10 "onMenuShareQQ", 11 "onMenuShareWeibo", 12 "onMenuShareQZone", 13 "showMenuItems" 14 ] // 必填,需要使用的JS接口列表 15 })
一般appId是不会错的,但是也有例外,比如我之前的项目,因为公司有好几个公众号,因此后台做的时候根据传过去的公众号名字对应给出数据的,由于之前没有经验,所以发了别的公众号过去,自然拿到的是错的。其次,经常报错的是签名invalid signature,原因可就太多了。appId错了签名一般不可能对的(反正没遇见过appId错签名对的情况),还有可能就是我们分享的自定义内容中的link错了,shareConfig一般是这样的:
1 { 2 title: \'\', // 分享标题 3 desc: \'\', // 分享描述 4 link: \'\', // 分享链接 5 imgUrl: \'\', // 分享小图 6 type: \'\', // 分享类型,music、video或link,不填默认为link 7 dataUrl: \'\', // 如果type是music或video,则要提供数据链接,默认为空 8 success: cb, 9 cancel: cb 10 }
在这里,这里的link指的是你分享出去后用户点击进入的页面。注意link后面的链接的主域名一定要加在 “JS接口安全域名”里面,比如你的链接是‘http://www.xx.com/link.html’,你就要把‘www.xx.com’放到 “JS接口安全域名”里。再次,如果你分享出去,没有看到小图标,先检查一下这个配置里面的imgUrl是否是绝对地址,如果不是,一定要换上绝对地址,一定不能写‘//a.m.cn/img/x.png’。最后,检查一下jsApiList,看看你要的功能有没有在这个清单里面。
以上就是我遇到的问题了,如果有其他问题,欢迎一起讨论。