微信公众号测试项目
图片引用地址SegmentFault
这种授权在第4步请求服务器返回token后,vue客服端直接重定向到最开始进入的页面
let params = { ...to.query }
// api接口登录
wxmp.login(params).then(res => {
setToken(res.data.token)
window.location.href = window.location.origin + getToUrl()
})
微信分享使用的是history模式实现自定义分享
经过测试实现步骤如下:
- 授权后进入router.beforeEach时判断系统类型,是IOS系统就记录当前URL到vuex中
注意:如果进入路由有重定向,需要加入重定向后的路由名称,比如'/'重定向到'/home'
if (!Vue.device.isAndroid) {
if (!store.state.app.iosJsUrl) {
let landingPage = document.URL
// 如果进入路由有跳转需要加入跳转后的路由名称,比如/跳转到/home
if (to.name === HOME && landingPage.indexOf(HOME) === -1) {
landingPage = landingPage + HOME
}
store.commit(types.SET_WX_JS_URL, {iosJsUrl: landingPage})
}
}
- 进入router.afterEach时判断系统类型,获取不同的jssdk签名地址
router.afterEach(to => {
// store.commit(types.UPDATE_LOADING_STATUS, {isLoading: false})
let _url = window.location.origin + to.fullPath
if (!Vue.device.isAndroid) {
_url = store.state.app.iosJsUrl.split('#')[0]
}
wechat.getJSSDK(_url)
})
- vue全局公用函数实现分享
Vue.prototype.wxShare = wechat.setWxShare
setWxShare (title, desc, link, imgUrl) {
Vue.wechat.ready(() => {
// 分享给朋友
Vue.wechat.onMenuShareAppMessage({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接 默认以当前链接
imgUrl: imgUrl, // 分享图标
success () {
},
cancel () {
}
})
// 分享到朋友圈
Vue.wechat.onMenuShareTimeline({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接 默认以当前链接
imgUrl: imgUrl, // 分享图标
success () {
},
cancel () {
}
})
})
}
- 页面中调用wxShare实现自定义分享
activated () {
this.share()
},
methods: {
share () {
let link = window.location.href.split('#')[0]
this.wxShare('首页', '首页内容', link, 'https://o3e85j0cv.qnssl.com/tulips-1083572__340.jpg')
}
}
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# build for production and view the bundle analyzer report
npm run build --report
# run unit tests
npm run unit
# run e2e tests
npm run e2e
# run all tests
npm test
For a detailed explanation on how things work, check out the guide and docs for vue-loader.