uniapp 微信公众号H5自定义分享

fm:首先 先看文档 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#44

然后 弄个公众号测试账号 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

然后 填一些信息
在这里插入图片描述
然后 就是在页面进来时 先去wx.config debug开启确认成功之后 再去做分享啊 摄像头啊 其他的

const jssdk_share = function(me, option) {
    var me = this

    var now_url = window.location.href
    var can_share = false
    var jsApiList = ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareWeibo']
    var openTagList = []
    var ip = '192.168.50.212'
    config(jsApiList, openTagList, now_url, ip).then(res => {
        var res = res[1].data.data
        jweixin.config({
            debug: res.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: res.appId, // 必填,公众号的唯一标识
            timestamp: res.timestamp, // 必填,生成签名的时间戳
            nonceStr: res.nonceStr, // 必填,生成签名的随机串
            signature: res.signature, // 必填,签名
            jsApiList: res.jsApiList // 必填,需要使用的JS接口列表
        })
    })
    jweixin.ready(() => {
        // config信息验证后会执行ready方法
        // 所有接口调用都必须在config接口获得结果之后
        // config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
        // 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
        jweixin.checkJsApi({
            jsApiList: [
                'onMenuShareWeibo',
                'updateAppMessageShareData',
                'updateTimelineShareData'
            ], // 需要检测的JS接口列表,所有JS接口列表见附录2,
            success: function(res) {
                console.log('checkJsApi:', res)
            },
        })



    })

}

然后呢 在main.js ;里面做一个全局混入

Vue.mixin({
    data(){
        return {
            access_id: Vue.prototype.$store.state.access_id || uni.getStorageSync('access_id'),
            language: zh_CN,
            languageType: "",
            hasGrade: ''
        }
    },
    created () {
        
        this.setLang();
        // #ifdef H5
        window.onbeforeunload = function () {
            window.scrollTo(0, 0);
        }
        // #endif
        
        this.hasGrade = uni.getStorageSync('hasGrade')
        
    },
    onLoad: function(option) {
        if (option.fatherId) {
            uni.setStorageSync('fatherId', option.fatherId);
            if (option.isfx) {
                laiketuiComm.bindPID(option.isfx, option.fatherId)    
            }
        }
        
        //然后在全局初始化的时候去config这个方法
        // #ifdef H5
        jssdk_share(this, option)
        // #endif
    },
    onShow() {
        this.setLang();
        
        if(this.getURL('nph_id')){
           uni.setStorageSync('mch_id',this.getURL('nph_id')) 
        }else{
            uni.setStorageSync('mch_id','0') 
        }
    },
    computed: {
        halfWidth () {
            return `${statusBarHeight}px`
        }
    },
    methods: {
        // 获取url地址键值
        getURL(param){
             var query = window.location.search;
               var iLen = param.length;
               var iStart = query.indexOf(param);
               if (iStart == -1){
                   return "";
               }
               iStart += iLen + 1;
               var iEnd = query.indexOf("&", iStart);
               if (iEnd == -1){
                   return query.substring(iStart);
               }
               return query.substring(iStart, iEnd);
        },
        
        //在你需要分享的页面调用这个方法
        config(title){
            var now_url = window.location.href
            //显示分享的按钮
            this.$jweixin.showOptionMenu()
          jweixin.updateAppMessageShareData({
              title: title, // 分享标题
              desc: '我出来了!', // 分享描述
              link: now_url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
              imgUrl: 'https://profile.csdnimg.cn/B/B/4/0_weixin_45549016', // 分享图标
          })
          jweixin.updateTimelineShareData({
              title:title, 
              desc: '啊呦!', 
              link: now_url, 
              imgUrl: 'https://profile.csdnimg.cn/B/B/4/0_weixin_45549016',
          })  
        },
      
        // 检测登录
        isLogin(callback){
            this.$nextTick(() => {
                this.$refs.lktAuthorizeComp.handleAfterAuth(this, 'snsapi_userinfo', function() {
                    callback && callback()
                });
            })
        },
 
       
     
    }
})

因为有些页面不能分享 比如购物车 个人信息 不能分享 所以在不能分享的页面初始化的时候 执行这个方法

 // 禁止分享
this.$jweixin.hideOptionMenu()

到这里 应该都可以自定义分享了

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张帅涛_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值