原本效果:php
预期效果:html
参考:微信开发者文档js-sdk前端
须要准备的:web
**经过微信认证的公众号** **有备案过的域名**
步骤:后端
后台须要实现的事情:api
1.登陆微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”,(调用的url必须在js接口安全域名能够 )安全
2.登陆后可在“开发者中心”查看对应的接口权限,认证过的公众号均可以调大多数接口。微信
3.生成js-sdk的权限签名:jsapi_ticket 参照js-sdk权限签名文档微信开发
前端须要干的事情:
1.在须要调用JS接口的页面引入以下JS文件,(支持https):http://res.wx.qq.com/open/js/...
备注:支持使用 AMD/CMD 标准模块加载方法加载app
2.前端经过发送请求获取签名权限或者后台语言嵌入html (题主公司直接用的内嵌php),由于签名权限出于安全问题只能经过后台实现
3.经过config接口注入权限验证配置,参数由后台提供,选项debug上线后记得设置成false
wx.config({ debug: true, // 开启调试模式,调用的全部api的返回值会在客户端alert出来,若要查看传入的参数,能够在pc端打开,参数信息会经过log打出,仅在pc端时才会打印。 appId: '', // 必填,公众号的惟一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名 jsApiList: [] // 必填,须要使用的JS接口列表 });
全部须要使用JS-SDK的页面必须先注入配置信息,不然将没法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,因此使用pushState来实现web app的页面会致使签名失败,此问题会在Android6.2中修复)。
4.经过ready接口处理成功验证,验证失败进入error回调函数
wx.ready(function(){ // config信息验证后会执行ready方法,全部接口调用都必须在config接口得到结果以后,config是一个客户端的异步操做,因此若是须要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则能够直接调用,不须要放在ready函数中。 });
5.经过error接口处理失败验证
验证失败多是因为签名过时或者没有接收到等缘由致使的
wx.error(function(res){ // config信息验证失败会执行error函数,如签名过时致使验证失败,具体错误信息能够打开config的debug模式查看,也能够在返回的res参数中查看,对于SPA能够在这里更新签名。 });
6.在ready函数里写分享的代码
请注意不要有诱导分享等违规行为,对于诱导分享行为将永久回收公众号接口权限
分享朋友圈代码:
//获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: '', // 分享标题 link: '', // 分享连接,该连接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: '', // 分享图标 这个图片地址须要填写绝对路径 www.xxx.com/images/xxx.jpg success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } });
分享给朋友代码
wx.onMenuShareAppMessage({ title: '', // 分享标题 desc: '', // 分享描述 link: '', // 分享连接,该连接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: '', // 分享图标 这个图片地址须要填写绝对路径 www.xxx.com/images/xxx.jpg type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 若是type是music或video,则要提供数据连接,默认为空 success: function () { // 用户确认分享后执行的回调函数 }, cancel: function () { // 用户取消分享后执行的回调函数 } });
本身写的时候碰到的bug:
由于先后端没有分离,在经过config接口注入权限验证配置时须要把js代码写在html文件中才能获取到参数,单独写成一个js文件读取不到
以上就是所有代码,有错欢迎指出,看到就会改,但愿能帮到你!