vue实现微信分享朋友圈和朋友功能
温馨提示:本文共3536个字,读完预计9分钟。
这两天在开发一个双十一的活动页,前端用的是Vue,由于活动的性质需要传播分享,所以在项目中也集成了微信JS-SDK自定义的功能,下面来说一下实现的思路和方法。
前提:要有公众号,需要在其后台添加一个安全域名,安全域名用于微信的验证,没有这一步操作,下面的都白搭。一般还需要后端提供一个获取appid,timestamp,签名等信息的接口给你ajax请求用。如果你自己用nodejs啥的实现,那么也是棒棒的。
下面说一下具体的步骤:
1、通过npm 安装 微信的js-sdk,当然你也可以在index.html页面中直接加script标签来引用,哪种方式都可以。命令如下:
1 |
npm install weixin-js-sdk --save-dev |
2、在Vue目录下,比如:common文件夹,新建一个js文件,起名你随意,我这边叫wxapi.js,贴入下面代码(PS: Axios根据实际情况来使用):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/**
* 微信js-sdk
* 参考文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
*/
import wx from \'weixin-js-sdk\'
import Axios from \'axios\'
const wxApi = {
/**
* [wxRegister 微信Api初始化]
* @param {Function} callback [ready回调函数]
*/
wxRegister (callback) {
// 这边的接口请换成你们自己的
Axios.post(\'/api/wechat/shares\', { reqUrl: window.location.href }, { timeout: 5000, withCredentials: true }).then((res) => {
let data = JSON.parse(res.data.data) // PS: 这里根据你接口的返回值来使用
wx.config({
debug: false, // 开启调试模式
appId: data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.noncestr, // 必填,生成签名的随机串
signature: data.signature, // 必填,签名,见附录1
jsApiList: data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
}).catch((error) => {
console.log(error)
})
wx.ready((res) => {
// 如果需要定制ready回调方法
if (callback) {
callback()
}
})
},
/**
* [ShareTimeline 微信分享到朋友圈]
* @param {[type]} option [分享信息]
* @param {[type]} success [成功回调]
* @param {[type]} error [失败回调]
*/
ShareTimeline (option) {
wx.onMenuShareTimeline({
title: option.title, // 分享标题
link: option.link, // 分享链接
imgUrl: option.imgUrl, // 分享图标
success () {
// 用户成功分享后执行的回调函数
option.success()
},
cancel () {
// 用户取消分享后执行的回调函数
option.error()
}
})
},
/**
* [ShareAppMessage 微信分享给朋友]
* @param {[type]} option [分享信息]
* @param {[type]} success [成功回调]
* @param {[type]} error [失败回调]
*/
ShareAppMessage (option) {
wx.onMenuShareAppMessage({
title: option.title, // 分享标题
desc: option.desc, // 分享描述
link: option.link, // 分享链接
imgUrl: option.imgUrl, // 分享图标
success () {
// 用户成功分享后执行的回调函数
option.success()
},
cancel () {
// 用户取消分享后执行的回调函数
option.error()
}
})
}
}
export default wxApi
|
3、如何使用呢?
在Vue页面,比如首页,先引入刚刚的js文件:
1 |
import wxapi from \'@/common/wxapi.js\' |
在mounted()中加入调用的代码:
1 |
wxapi.wxRegister(this.wxRegCallback) |
然后再methods中加入下面3个方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
wxRegCallback () {
// 用于微信JS-SDK回调
this.wxShareTimeline()
this.wxShareAppMessage()
},
wxShareTimeline () {
// 微信自定义分享到朋友圈
let option = {
title: \'限时团购周 挑战最低价\', // 分享标题, 请自行替换
link: window.location.href.split(\'#\')[0], // 分享链接,根据自身项目决定是否需要split
imgUrl: \'logo.png\', // 分享图标, 请自行替换,需要绝对路径
success: () => {
alert(\'分享成功\')
},
error: () => {
alert(\'已取消分享\')
}
}
// 将配置注入通用方法
wxapi.ShareTimeline(option)
},
wxShareAppMessage () {
// 微信自定义分享给朋友
let option = {
title: \'限时团购周 挑战最低价\', // 分享标题, 请自行替换
desc: \'限时团购周 挑战最低价\', // 分享描述, 请自行替换
link: window.location.href.split(\'#\')[0], // 分享链接,根据自身项目决定是否需要split
imgUrl: \'logo.png\', // 分享图标, 请自行替换,需要绝对路径
success: () => {
alert(\'分享成功\')
},
error: () => {
alert(\'已取消分享\')
}
}
// 将配置注入通用方法
wxapi.ShareAppMessage(option)
}
|
以上几步即实现了微信的分享功能,如果期间遇到问题,请自己开启debug调试模式,并根据错误提示的内容去解决。一般如果后端接口没问题的话,前端一般只会遇到:签名验证失败或者URL的问题。