阅读 314

vue 使用weixin-js-sdk

首先说明一下这个插件是干嘛的,weixin-js-sdk 可以设置分享朋友圈、朋友的图标、标题、摘要。
不得不说vue这两年的生态真是越来越强大了,不管什么东西,只要兼容了vue,只需install一下,盘就完事了。(官方文档把我看的头疼,一看那么长都不想看了)

官方文档:

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

安装(-g全局 | -S本项目)

npm install weixin-js-sdk -S

引入

import wx from 'weixin-js-sdk'

使用

    created() {
        this.setwxshare(); //设置微信分享朋友圈
    },
    mounted() {},
    methods: {
        //设置微信分享朋友圈
        setwxshare() {//先获取后台的配置
            let param = new URLSearchParams();
            let that = this;
            param.append("url", window.location.href.split("#")[0]);
            axios                .post("/aaaaaaa", param)
                .then((res) => {
                    var obj = res.data.data;
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: obj.appid, // 必填,公众号的唯一标识
                        timestamp: obj.timestamp, // 必填,生成签名的时间戳
                        nonceStr: obj.nonceStr, // 必填,生成签名的随机串
                        signature: obj.signature, // 必填,签名
                        jsApiList: [
                            "updateAppMessageShareData",
                            "updateTimelineShareData",
                        ], // 必填,需要使用的JS接口列表
                    });
                })
                .catch((err) => {
                    console.log("设置微信分享失败");
                });
        },
    },
    watch: {
        $route(to, from) {
            this.setwxshare(); //设置微信分享朋友圈
        },
    },

就这样,只要服务端返回的签名没有错,就能配置成功,就可以使用微信js-sdk啦。

        //获取活动信息并设置微信分享
        getCONTACT() {
            axios                .get("/aaaaaa" + this.id)
                .then((res) => {
                    if (res.data.data) {
                        this.CONTACT = res.data.data;
                        var obj = this.CONTACT;
                        wx.ready(function () {
                            //需在用户可能点击分享按钮前就先调用
                            //自定义“分享给朋友”及“分享到QQ”按钮的分享内容
                            wx.updateAppMessageShareData({
                                title: obj.title, // 分享标题
                                desc: obj.summary, // 分享描述
                                link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                                imgUrl: obj.thumbMediaUrl, // 分享图标
                                success: function () {
                                    // 设置成功
                                    Notify({
                                        type: "success",
                                        message:
                                            "点击右上角可以分享到朋友圈与朋友",
                                    });
                                },
                            });
                            //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容
                            wx.updateTimelineShareData({
                                title: obj.title, // 分享标题
                                link: window.location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                                imgUrl: obj.thumbMediaUrl, // 分享图标
                                success: function () {
                                    // 设置成功
                                    Notify({
                                        type: "success",
                                        message:
                                            "点击右上角可以分享到朋友圈与朋友",
                                    });
                                },
                            });
                        });
                    } else {
                        this.CONTACT = {};
                        this.$toast.loading({
                            message: "详情获取失败...",
                            duration: 2000,
                        });
                    }
                })
                .catch((err) => {
                    this.$toast.loading({
                        message: "详情获取失败...",
                        duration: 2000,
                    });
                });
        },

注意
1.每次url变化之后都需要重新微信jssdk授权,虽然每次授权url除去#后都是一样的,但是必须这么做,微信的机制。(参考第一大块代码)
2.使用微信自定义分享功能的时候,当分享链接中存在中文的时候,一定要进行encodeURIComponent(),否则在安卓手机上能成功自定义分享,ios手机上则不能成功分享。查阅资料后得知是安卓手机会自动encodeURIComponent,而ios不会。
3.如果使用了history路由模式,传给后台url的时候也使用window.location.href.split("#")[0]。

原创不易,记得点赞



作者:渡_d
链接:https://www.jianshu.com/p/7048005a4933
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐