微信页面分享——笔记

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 + '&timestamp=' + 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

猜你喜欢

转载自www.cnblogs.com/wqsix/p/9362027.html
今日推荐