vue微信分享 微信 js-SDK

1. vue 前期配置 ( 此操作一般由后台童鞋配置 )

1.0.1 配置 js安全域名

配置js 安全域名 ,配置 
对于 vue框架 只需要配置到 页面的 #(哈希前) index 就可以了.

点击设置—公众号设置—功能设置进入设置界面

1.0.2 配置 ip白名单

配置IP白名单,微信公众平台出于安全考虑,
根据appId和appSecret去获取access_token的时候,
只允许白名单的ip去请求获取access_token的接口。
需要将测试、线上的接口部署的服务器的ip都配置进去。

设置—公众号设置—IP白名单里设置,多个ip用回车间隔。

1.0.3 公众号认证

需要公众平台配置认证,否则无法进行 微信自定义分享

1.0.4 基本操作

一:先在后台通过appId和secret去获取access_token(数据需要缓存)。

二:拿到access_token之后,去获取JsApiTicket(数据需要缓存)。

三:拿到JsApiTicket之后根据JsApiTicket、分享的url、
随机字符串noncestr、时间戳timestamp去生成签名signature、
并将signature及noncestr、timestamp、appid返回给
前端去初始化wx.config作权限验证。

2. 引入文件

2.0.1 CDN引入

建议CDN引入官方 SDK 文件,放入index.html
<script src="http://res2.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

2.0.2 npm安装引入

npm install weixin-js-sdk
在你需要的页面 引入
import wx from "weixin-js-sdk";

3. vue 前端接口调入

3.0.1 点击事件代码

点击事件代码
share() {
            let data = {
                url: window.location.href.split('#')[0]
            }
            this.$axios.post("接口地址", data).then(res => {
                //分享初始化接口
                let dataObj = res.data.data;
                if (res.data.status == 1) {
                    console.log(res);
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: dataObj.appid, // 必填,公众号的唯一标识		【公众号平台查看】
                        timestamp: dataObj.timestamp, // 必填,生成签名的时间戳    【后台返回】
                        nonceStr: dataObj.nonceStr, // 必填,生成签名的随机串	【后台返回】
                        signature: dataObj.signature, // 必填,签名				【后台返回】
                        jsApiList: ['onMenuShareAppMessage',
                            'onMenuShareTimeline',
                            'chooseWXPay',
                            'showOptionMenu',
                            "updateAppMessageShareData",
                            "updateTimelineShareData",
                            "hideMenuItems",
                            "showMenuItems",
                            "onMenuShareTimeline",
                            'onMenuShareAppMessage'
                        ] // 必填,需要使用的JS接口列表【例如分享的几个Api:'onMenuShareAppMessage', 'onMenuShareQQ'】
                    });
                    wx.ready(function() {
                        wx.checkJsApi({ // 1 判断当前版本是否支持指定 JS 接口,支持批量判断
                            jsApiList: ['onMenuShareAppMessage',
                                'onMenuShareTimeline',
                                'chooseWXPay',
                                'showOptionMenu',
                                "updateAppMessageShareData",
                                "updateTimelineShareData",
                                "hideMenuItems",
                                "showMenuItems",
                                "onMenuShareTimeline",
                                'onMenuShareAppMessage'
                            ], // 必填,需要使用的JS接口列表【例如分享的几个Api:'onMenuShareAppMessage', 'onMenuShareQQ'】,
                            success: res => {
                                // alert(JSON.stringify(res));
                            }
                        });
                        wx.updateAppMessageShareData({
                            title: dataObj.title, // 分享标题
                            desc: dataObj.desc, // 分享描述
                            link: window.location.href.split('#')[0] + '#' + window.location.href.split('#')[1], // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                            imgUrl: dataObj.imgUrl, // 分享图标
                            success: res => {
                                // 用户点击了分享后执行的回调函数
                                // alert(JSON.stringify(res));
                            },
                            cancel: function() {
                                // 用户取消分享后执行的回调函数
                                // _this.$vux.toast.text('取消分享!!!')
                                Toast.fail('取消分享')
                            }
                        });

                        wx.updateTimelineShareData({
                            title: dataObj.title, // 分享标题
                            link: window.location.href.split('#')[0] + '#' + window.location.href.split('#')[1], // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                            imgUrl: dataObj.imgUrl, // 分享图标
                            success: res => {
                                // alert(JSON.stringify(res));
                                // Toast.success('分享成功2')
                            }
                        })
                    });
                }
            });
        }

3.0.2 事件需要在钩子函数 mounted (){ this.share()} 调入

4. 问题说明

4.0.1 在后台生成签名的时候,生成的 url 传入的地址不包含特殊字符 # ,但是由于 vue框架的特殊性,所以在传入后台的 url 的地址中需要不包含 # 只需传到 index , window.location.href.split(’#’)[0]

4.0.2 在后面调分享到朋友或朋友圈时需要传入页面的全部地址,
link: window.location.href.split(’#’)[0] + ‘#’ + window.location.href.split(’#’)[1], // 分享链接,
该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

5. 相关链接

5.0.1 签名校验工具:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

5.0.2 微信公众平台 https://mp.weixin.qq.com/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值