vue 微信分享回调iOS和安卓回调出现错误的解决


Posted in Javascript onSeptember 07, 2020

产品需求:在微信内分享需要手动配置的分享地址、分享图片与内容描述,引导用户分享,并在微信分享成功回调内进行相应的操作。

首先需要在项目中引入微信jsSDk包,然后通过接口获取后台签名。

vue 微信分享回调iOS和安卓回调出现错误的解决

封装函数获取微信分享必填参数

vue 微信分享回调iOS和安卓回调出现错误的解决

其中的jsApiList中填的是需要使用的微信分享js接口的列表,参数URL默认是location.href,即分享当前页面的URL。

在需要分享的页面引入封装的函数

vue 微信分享回调iOS和安卓回调出现错误的解决

然后通过wxShare方法将URL和配置的参数传入,link参数是分享出去的链接,必须与当前页面的对应js安全域名一致;

vue 微信分享回调iOS和安卓回调出现错误的解决

...shareData就是在函数内传对象,进行解构赋值es6写法

vue 微信分享回调iOS和安卓回调出现错误的解决

但是在测试过程中发现:

1.同一套程序,andriod分享正常,ios分享报签名不正确,主要原因是微信的ios和安卓处理方式不一样,ios不会刷新当前的页面地址,使用的是history的记录地址,所以每次分享出来的链接,都是第一个进入系统页面的链接,当跳转到子页面的时候,系统就会识别打开的url和签名的url不一致导致签名不正确

2.由于单页面的hash模式会自带#号,但是分享的时候会将#号后面的参数变成无效,导致想传参数都传不过去,可以做一个页面没有#号的,然后统一带参数分享到这个页面然后再重定向到指定的vue页面

解决方法:在向后台发送请求获取微信签名的时候将传给后台的URL的#后面的参数截去,后台根据截取完的URL生成签名就能实现安卓和iOS分享回调成功的问题。

vue 微信分享回调iOS和安卓回调出现错误的解决

补充知识:使用Vue全家桶进行微信分享时出现的错误

使用vue.js进行微信H5页面开发,开发过程中先进行oAuth身份验证。后使用JSSDK,进行微信分享。分享时会出现不调用自定义分享界面的情况,但是在刷新后可以正常显示,

如下:

正常进入分享:

vue 微信分享回调iOS和安卓回调出现错误的解决

刷新后分享:

vue 微信分享回调iOS和安卓回调出现错误的解决

由于Vue和微信调试环境的问题,在经过几次痛苦的尝试后,我们发现了一个现象,那就是,如果此时点击使用Safari打开,会出现:

vue 微信分享回调iOS和安卓回调出现错误的解决

这是我们在使用oAuth认证时跳转的中间界面(从oauth回调的页面),但是在使用微信调试工具的时候,显示的url为正确页面,既为从回调页面跳转的页面。

我们知道,在使用JSSDK进行微信认证的时候,需要使用当前url调用wxcofig,那会不会有一种可能,当vue进行页面跳转的时候,微信浏览器仍然认为当前页面在原页面,所以导致传递的url和微信认为你的url不一致,所以导致认证错误。

于是在尝试给wxconfig传递url的时候,使用了跳转前中间结果的url(既,保持传递给认证的url和使用Safari打开的url一致),结果居然就行了。。。

行吧,算是微信在兼容vue的时候的一个坑,但愿大家以后能尽早跳出来。。。

以上这篇vue 微信分享回调iOS和安卓回调出现错误的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
拉动滚动条加载数据的jquery代码
May 03 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jQuery布局组件EasyUI Layout使用方法详解
Feb 28 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
js操作二进制数据方法
Mar 03 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 Javascript
Vue 2.0 侦听器 watch属性代码详解
Jun 19 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
多页vue应用的单页面打包方法(内含打包模式的应用)
Jun 11 Javascript
一篇文章带你从零快速上手Rollup
Sep 07 #Javascript
基于vue hash模式微信分享#号的解决
Sep 07 #Javascript
在项目vue中使用echarts的操作步骤
Sep 07 #Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
Sep 07 #Javascript
Vue.js原理分析之nextTick实现详解
Sep 07 #Javascript
小程序实现可拖动的悬浮按钮
Sep 07 #Javascript
vue 修改 data 数据问题并实时显示操作
Sep 07 #Javascript
You might like
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
js post提交调用方法
2014/02/12 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
javascript的alert box在java中如何显示多行
2014/05/18 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
JS把内容动态插入到DIV的实现方法
2016/07/19 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
基于D3.js实现时钟效果
2018/07/17 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
vue+Element中table表格实现可编辑(select下拉框)
2020/05/21 Javascript
在Uni中使用Vue的EventBus总线机制操作
2020/07/31 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
如何使用python操作vmware
2019/07/27 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
Python加速程序运行的方法
2020/07/29 Python
pytorch 实现L2和L1正则化regularization的操作
2021/03/03 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
OSPF有什么优点?为什么OSPF比RIP收敛快?
2013/02/13 面试题
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
优秀少先队工作者事迹材料
2014/05/13 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
毕业论文致谢词
2015/05/14 职场文书
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
你真的了解redis为什么要提供pipeline功能
2021/06/22 Redis
分享几个简单MySQL优化小妙招
2022/03/31 MySQL