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 相关文章推荐
javascript 复杂的嵌套环境中输出单引号和双引号
May 26 Javascript
非阻塞动态加载javascript广告实现代码
Nov 17 Javascript
浅析jQuery中常用的元素查找方法总结
Jul 04 Javascript
js选项卡的实现方法
Feb 09 Javascript
jQuery实现的多屏图像图层切换效果实例
May 07 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 Javascript
javascript 动态脚本添加的简单方法
Oct 11 Javascript
正则验证小数点后面只能有两位数的方法
Feb 28 Javascript
JS按钮闪烁功能的实现代码
Jul 21 Javascript
JavaScript中使用import 和require打包后实现原理分析
Mar 07 Javascript
浅谈React 服务器端渲染的使用
May 08 Javascript
element-ui中select组件绑定值改变,触发change事件方法
Aug 24 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 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
修改file按钮的默认样式实现代码
2013/04/23 Javascript
javascript代码运行不出来执行错误的可能情况整理
2013/10/18 Javascript
jQuery中$.each使用详解
2015/01/29 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
分享jQuery网页元素拖拽插件
2020/12/01 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
jQuery.parseHTML() 函数详解
2017/01/09 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
JavaScript实现省份城市的三级联动
2020/02/11 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[40:48]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第二局
2016/02/28 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python实现下载指定网址所有图片的方法
2015/08/08 Python
python僵尸进程产生的原因
2017/07/21 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
Python异常模块traceback用法实例分析
2019/10/22 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
高中毕业的自我鉴定
2013/12/09 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
先进典型发言材料
2014/12/30 职场文书
期中考试复习计划
2015/01/19 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
Python如何使用循环结构和分支结构
2022/04/13 Python