美文网首页
微信jssdk 分享

微信jssdk 分享

作者: 拾钱运 | 来源:发表于2019-04-24 22:39 被阅读0次

微信js-SDK手册地址:

https://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3
第一步:
引入::http://res.wx.qq.com/open/js/jweixin-1.4.0.js](http://res.wx.qq.com/open/js/jweixin-1.4.0.js)支持https 认真引入

wx.config({
    debug:true,//在配置权限注入成功或者报错提示
    appId:'' ,//微信公众号的
    timestamp:'',//生成签名的时间戳    后台返回
    nonceStr:'',  //生成签名的随机传      后台返回
    signature:'',//签名      后台返回
    jsApiList :[]   //需要使用的js接口列表,所有js接口列表见文档
})
//config 成功之后的接口处理
wx.ready(function(){
      //data为后台返回的data
      var data={
        title:'标题',
        desc:'描述',
        link:'分享链接',
        imgUrl:''//分享图片,
        success:function(){
          console.log('分享成功')
        },
        fail:function(){
          console.log('分享失败')
        }
      }
      const userShare= Object.assign(data, {
        success:function(){
          console.log('分享成功')
        }
      })
      wx.onMenuShareTimeline(userShare)、//分享到朋友圈
      wx.onMenuShareAppMessage(userShare)//分享给朋友
      wx.onMenuShareQQ(userShare)  //分享到QQ
      wx.onMenuShareQZone(userShare)  //分享QQ空间
})

这样微信分享就完成了,但是里面有个坑,ios,还有就是第二次分享的时候
1.ios签名的时候只签名一次,后台签名根据当前的url进行签名,然后返回分享跳转链接,需要特殊处理一下
我们的解决方式是通过多传一个参数后台做特殊处理解决
2.第二次分享的时候,微信会自动给链接加东西
可采用location.href.split('#')[0]; 方式去掉多
3.后台的签名要是动态获取的url

微信js接口校验:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 使用微信js接口校验的时候
获取jsapi_ticket 前提,是有个ip白名单的


// 判断ios还是android
  Vue.prototype.isIosOrAndroid = function () {
    let u = navigator.userAgent;
    let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1 // android终端
    let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端
    let isStr = ''
    if (isAndroid) {
      isStr = 'android'
    }
    if (isiOS) {
      isStr = 'ios'
    }
    return isStr

调查发现:
1.安卓需要使用当前url进行微信api注册,(即当场调用location.href.split('#')[0])
2.ios 需要使用进入到页面初始url进行注册(即在任何pushstate发生前,调用location.href.split('#')[0])
解决方法:
1.保存当前页面最初的url,假设为Int_URL
2.根据客户端的不同
2.1 安卓:在准备分享前(或发生url跳转后)使当前url进行config,如果失败,则尝试使用Int_URL
2.2 ios: 在准备分享前(获胜url跳转后),使用init_URL进行config,如果失败则尝试使用当前url注册

签名失败的原因

确保你获取用来签名和url是动态获取,动态页面参见实例代码中,以及?后台的参数

相关文章

网友评论

      本文标题:微信jssdk 分享

      本文链接:https://www.haomeiwen.com/subject/aapngqtx.html