1、微信浏览器判断:
if(/MicroMessenger/i.test(navigator.userAgent)){ //is wechat browser } 或 if(navigator.userAgent.toLowerCase().match(/MicroMessenger/i) === 'micromessenger'){ //is wechat browser }
2、微信实现分享
a-页面引入js:
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
b-配置信息:config接口注入权限验证配置
wx.config({ debug: true, appId: '', // 必填,公众号的唯一标识 timestamp: , // 必填,生成签名的时间戳 nonceStr: '', // 必填,生成签名的随机串 signature: '',// 必填,签名,****** jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 });
c-ready接口处理成功验证
wx.ready(function(){ // config信息验证后会执行ready方法, //------分享到朋友圈 wx.onMenuShareTimeline({ title: '', // 分享标题 link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: '', // 分享图标 success: function (res) { // 用户确认分享后执行的回调函数 logUtil.printLog("分享到朋友圈成功返回的信息为:",res); }, cancel: function (res) { // 用户取消分享后执行的回调函数 logUtil.printLog("取消分享到朋友圈返回的信息为:",res); } }); //------分享给朋友 wx.onMenuShareAppMessage({ title: '', // 分享标题 desc: '', // 分享描述 link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: '', // 分享图标 type: '', // 分享类型,music、video或link,不填默认为link dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空 success: function (res) { // 用户确认分享后执行的回调函数 logUtil.printLog("分享给朋友成功返回的信息为:",res); }, cancel: function (res) { // 用户取消分享后执行的回调函数 logUtil.printLog("取消分享给朋友返回的信息为:",res); } }); });
d-通过error接口处理失败验证
wx.error(function(res){console.log(res);})
3、加签:noncestr(签名随机字符串)、jsapi_ticket(票据)、timestamp(时间戳)、url(必须全部小写)等组成
获取access_token
请求接口:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的secret 请求方法: get 返回结果: access_token (有效期7200秒,必须在服务端缓存)
获取票据jsapi_ticket
请求接口:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=上一步中获取的access_token&type=jsapi 请求方法: get, type: JSON, 返回结果: jsapi_ticket (有效期7200秒,必须在服务端缓存)
生产时间戳timeStamp
// 时间戳产生函数 var timeStamp = function () { return parseInt(new Date().getTime() / 1000) + ''; };
签名算法(可以参考官方给出的demo:https://github.com/arronf2e/jssdk_simple)
var calcSignature =function(jsapi_ticket,nonceStr,timeStamp,url) { var result = { jsapi_ticket: jsapi_ticket, nonceStr: nonceStr, timestamp: timeStamp, url: url } var str = 'jsapi_ticket=' + ticket + '&noncestr=' + nonceStr + '×tamp=' + timeStamp + '&url=' + url; // 对str使用sha1签名,得到signature,这里使用jsSHA模块,需install shaObj = new jsSHA(str, 'TEXT'); result.signature = shaObj.getHash('SHA-1', 'HEX'); return result; // 返回到前端,提供接口由前端请求 }
微信分享问题总结:https://blog.csdn.net/u011743396/article/details/62427452
4、获取时间:JS获取当前时间及时间戳相互转换
获取当前时间的 时间戳
Date.parse(new Date())
结果:1486347562000
获取当前 时间
new Date()
结果:Mon Feb 06 2017 10:19:42 GMT+0800 (CST)
将时间戳转换成时间
new Date(1486347562000)
结果:Mon Feb 06 2017 10:19:22 GMT+0800 (CST)
将 时间 转换成 时间戳
Date.parse(new Date("2017-02-06 10:30:50"))
结果:1486348250000
5、参考地址:https://segmentfault.com/a/1190000010191885