vue微信分享

今天记录一下vue微信分享。

1.先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。这个不多说,见文档,只有绑定了才能进行下一步的动作

2.需要引入js文件   import wx from 'weixin-js-sdk'

3.通过config接口注入权限验证配置,所有需要使用JS-SDK的页面必须先注入配置信息 配置信息需要后端返回

  share(){
if(this.hdusers!=[]){
this.$http.post(this._getUrl()+"Index/wxShare",
{"url":window.location.href},{emulateJSON:true}
).then((response) => {
response = response.body;
// console.log(response)
this.wxInit(response);
});
}
},
mounted(){
this.share();
},
             //微信分享使用方法
wxInit(sd){
// alert(window.location.href)
let links=window.location.href; //分享出去的链接
let title='向您推荐:'+this.hdusers.name+'的活动微站'; //分享的标题
let desc='关注'+this.hdusers.name+'有新活动通知您'; //分享的详情介绍
let imgUrl=this.hduserpic;
wx.config({
debug: false,
appId: sd.appId,
timestamp: sd.timestamp,
nonceStr: sd.nonceStr,
signature: sd.signature,
jsApiList: [
'onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'
]
});
wx.ready(function () {
wx.onMenuShareTimeline({
title: title, // 分享标题
desc: desc, // 分享描述
link:links, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// alert("分享到朋友圈成功")
Toast({
message: "成功分享到朋友圈"
});
},
cancel: function () {
// alert("分享失败,您取消了分享!")
Toast({
message: "分享失败,您取消了分享!"
});
}
});
//微信分享菜单测试
wx.onMenuShareAppMessage({
title:title, // 分享标题
desc: desc, // 分享描述
link: links, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// alert("成功分享给朋友")
Toast({
message: "成功分享给朋友"
});
},
cancel: function () {
// alert("分享失败,您取消了分享!")
Toast({
message: "分享失败,您取消了分享!"
});
}
}); wx.onMenuShareQQ({
title:title, // 分享标题
desc: desc, // 分享描述
link:links, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// alert("成功分享给QQ")
Toast({
message: "成功分享到QQ"
});
},
cancel: function () {
// alert("分享失败,您取消了分享!")
Toast({
message: "分享失败,您取消了分享!"
});
}
});
wx.onMenuShareWeibo({
title:title, // 分享标题
desc: desc, // 分享描述
link: links, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// alert("成功分享给朋友")
Toast({
message: "成功分享到腾讯微博"
});
},
cancel: function () {
// alert("分享失败,您取消了分享!")
Toast({
message: "分享失败,您取消了分享!"
});
}
});
wx.onMenuShareQZone({
title:title, // 分享标题
desc: desc, // 分享描述
link: links, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// alert("成功分享给朋友")
Toast({
message: "成功分享到QQ空间"
});
},
cancel: function () {
// alert("分享失败,您取消了分享!")
Toast({
message: "分享失败,您取消了分享!"
});
}
});
});
wx.error(function(res){
// alert("error")
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
},

重点:

在每个需要分享的页面成功配置后,最后发现一个问题,我在微信登陆后,后台跳回我的页面的时候,安卓手机的微信没问题,而我的苹果手机分享就一直不成功,是因为我用的是history模式,ios的微信记录的url发生了改变,因为ios的微信对于vue的单页面项目只记住第一次进来的url,所以在每一个第一次进来的url都必须注入权限验证配置,不然在后续其他页面的分享是分享不成功的。

https://github.com/vuejs/vue-router/issues/481微信分享问题

vue,一路走来(13)--vue微信分享的更多相关文章

  1. vue,一路走来(1)--构建vue项目

    2016年12月--2017年5月,接触前端框架vue,一路走来,觉得有必要把遇到的问题记录下来. 那时,vux用的是1.0的vue,然而vue2.0已经出来了,于是我结合了mint-ui一起来做项目 ...

  2. vue,一路走来(3)--数据交互vue-resource

    所有的静态页面布局完成后,最重要的就是数据交互了,简单来说,vue-resource就像jquery里的$.ajax,用来和后台交互数据的.放在created或ready里运行来获取或者更新数据的.不 ...

  3. vue,一路走来(6)--微信支付

    微信支付 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6 分享一下vue实现微信支付.在微信浏览器里面 ...

  4. vue,一路走来(5)--微信登录

    微信登录 今天又是周末了,想着博客还没记录完成.是的,下面记录一下微信登录遇到的问题. 在我的项目中,个人中心是需要完成授权登录才可以访问的,首先在定义路由的时候就需要多添加一个自定义字段requir ...

  5. vue,一路走来(16)--本地及手机调试

    闲暇时间记录一下如何绑定域名,实现本地及手机调试的过程.我的是微信开发项目,很多功能及操作都是基于微信来开发的,理所当然的就用到微信开发者工具了. 1.首先打开目录C:\Windows\System3 ...

  6. vue,一路走来(7)--响应路由参数的变化

    今天描述的问题估计会有很多人也遇到过. vue-router多个路由地址绑定一个组件造成created不执行 也就是文档描述的,如下图 我的解决方案: created () { console.log ...

  7. vue,一路走来(17)--vue使用scss,并且全局引入公共scss样式

    最近朋友问如何在vue项目中使用scss样式,想起之前项目是直接在main.js直接import css文件的,然而main.js不可以直接import scss文件. import './asset ...

  8. vue,一路走来(12)--父与子之间传参

    今天想起一直没有记录父组件与子组件的传参问题,这在项目中一直用到. 父向子组件传参 Index.vue父组件中 <component-a :msgfromfa="(positionno ...

  9. vue,一路走来(2)--路由vue-router

    安装 Mint UI cnpm install mint-ui --save 如果你的项目会用到 Mint UI 里较多的组件,最简单的方法就是把它们全部引入.此时需要在入口文件 main.js 中: ...

随机推荐

  1. python 小工具 重命名当前文件夹内所有的文件,升序命名

    背景:一个朋友想升序重命名他的照片,但是太多了不想手动所以,emememem os这个模块,不用说,rename,filedir等 #conding=utf8 import os path = os. ...

  2. mysql错误: waiting for table metadata lock

    今天突然发现truncate一个表都慢到不行,于是 SHOW PROCESSLIST 发现错误:waiting for table metadata lock解决方法:查看information_sc ...

  3. ueditor编辑器中从word中复制带图片的信息的操作演示

    我司需要做一个需求,就是使用富文本编辑器时,不要以上传附件的形式上传图片,而是以复制粘贴的形式上传图片. 在网上找了一下,有一个插件支持这个功能. WordPaster 安装方式如下: 直接使用Wor ...

  4. Python_006(is和==,小数据池)

    一.is和==的区别 1.id()方法,可以查看一个变量的内存地址 lst = ["周杰伦", "燃哥"] lst1 = ["周杰伦", & ...

  5. selenium 浏览器无界面模式运行

    以Chrome浏览器为例: 方法一: from selenium.webdriver import Chrome, ChromeOptions opt = ChromeOptions() # 创建Ch ...

  6. 解决webpack打包vue项目后,部署完成后,刷新页面页面404

    1.url不动式url完全不动,即你的页面怎么改变,怎么跳转url都不会改变.这种情况的原理 就是纯ajax拿到页面后替换原页面中的元素,刷新页面就是首页 2.带hash(#)式这种相对于第一种的话刷 ...

  7. Jupyter Notebook 快捷键(基本)

    Jupyter Notebook 快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的单 ...

  8. 像计算机科学家一样思考python-第2章 变量、表达式和语句

    感想: 1.程序出现语义错误时,画状态图是一个很好的调试办法.打印出关键变量在不同代码处理后值的变化,就能发现问题的蛛丝马迹. 2.每当学习新语言特性时,都应当在交互模式中进行尝试,并故意犯下错误,看 ...

  9. Kestrel web server implementation in ASP.NET Core

    https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore1x&view ...

  10. FTP 服务器搭建(基于 CentOS 7)

    参考资料: 檔案伺服器之三: FTP 伺服器 用 vsftpd 配置FTP服务器 vsftpd 的所有选项 注意,如果要所有人同时编辑 FTP 上的所有文件,可以将 vsftpd.conf 配置文件中 ...