最近做vue项目的微信公众号项目,涉及到微信分享,记录一下心得,以备后用,vue路由用的是hash模式;

该项目只是公众号里面的h5链接,不需要获取code获取access_token的票据,因此前端只需要将当前页面链接处理后发给后端回去分享参数即可;

分享参数包含:

wx.updateTimelineShareData({
title: option.title, // 分享标题
link: option.link, // 分享链接,该链接必须与当前页面对应的公众号的JS安全域名一致
imgUrl: option.imgUrl, // 分享图标 300*300
desc: option.desc, // 分享描述
success (res) {
// 用户成功分享后执行的回调函数
option.success(res)
},
cancel (error) {
// 用户取消分享后执行的回调函数
option.error(error)
}
})

1、第一步获取页面url;

通过window.location.href.split('#')[0]获取到页面的url,而且需要encodeURIComponent处理后发给后端来获取签名,否则签名无效;页面链接需要是动态获的,否则将导致分享后的页面签名失败。

2、第二步定义分享参数;

分享链接要求该链接域名或路径必须与当前页面对应的公众号JS安全域名一致,就是该链接必须是在公众号的JS安全域名接口中配置好的;

分享图片大小最好是300*300的,大小没有查到是否限制,但是尽量小,避免出现分享的链接无法记载出来图片;

3、第三步,调试;

由于公众号的各种限制,导致无法进行本地调试(大神请忽略,具体实现请百度),因此项目最好有个测试环境,新项目也可以直接在线上环境测试;

因为分享参数初始化的时候会判断当前页面的url与分享的link是否一致,不一致会报错,就导致无法在本地调试分享;

4、第四步解决ios和安卓分享后链接不一致的问题;

测试环境在ios端,分享参数正常,点击后,根据vue路由跳转也正常,ios分享给安卓后的链接,安卓也可以正常跳转页面,但是安卓从测试环境进去后,分享出来的参数显示正常,但是无法跳转到指定页面,只能跳转到路由首页;

通过复制链接发现,安卓获取的href是无法获取到#以及后面的路由参数的,导致页面只能是路由首页。但是安卓通过ios分享的链接点击进去后,再点击分享,发现路由跳转是正常的。

也就是说,如果安卓是通过带有#和路由参数的路径进去的项目,那么再获取的href则跟ios是一致的,路由也是正常跳转的;

处理方案有两种:第一种是判断当前机型是ios还是安卓,然后对获取的link进行不同的处理;ios无需处理,安卓拼接‘#’和当前路由参数即可;

第二种是公众号的点击链接不要只写域名,而是加上带有#和默认路由的,这样安卓点击进去获取的href也是正常的;

vue项目中关于微信分享的坑,以及安卓和ios获取location.href不同的处理的更多相关文章

  1. [转]Vue项目全局配置微信分享思路详解

    这篇文章给大家介绍了vue项目全局配置微信分享思路讲解,使用vue作为框架,使用vux作为ui组件库,具体内容详情大家跟随脚本之家小编一起学习吧 这个项目为移动端项目,主要用于接入公众号服务.项目采用 ...

  2. vue 项目如何使用微信分享接口

    首先做微信网页都要接入微信sdk: 安装sdk npm install weixin-js-sdk --save 具体可以查看微信公众平台技术文档:https://mp.weixin.qq.com/w ...

  3. vue项目中微信jssdk在ios签名失败

    一.问题描述 1. vue项目中微信jssdk签名时,在安卓和ios是有差异的,签名时使用的url=window.location.href.split('#')[0],此时在安卓没问题,在ios会导 ...

  4. vue入坑教程(二)在vue项目中如何导入element以及sass

    在项目中导入element以及sass.stylus等方便开发的工具以及UI框架 (1)如何在vue项目中导入elementUI框架 elementUI是饿了么团队开发出来基于vue的前端UI框架,其 ...

  5. Vue2中实现微信分享支付功能

    Vue2中实现微信分享支付功能  近期做了一个微信公众号前后分离项目,前端采用Vue2开发,后端SpringBoot,今天迫不及待的来给大家分享一下这次在开发中遇到的一些坑以及解决办法. 在这里,一些 ...

  6. vue项目中使用bpmn-基础篇

    内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...

  7. vue项目中遇到的那些事。

    前言 有好几天没更新文章了.这段实际忙着做了一个vue的项目,从 19 天前开始,到今天刚好 20 天,独立完成. 做vue项目做这个项目一方面能为工作做一些准备,一方面也精进一下技术. 技术栈:vu ...

  8. 如何正确的在项目中接入微信JS-SDK

    微信JS-SDK的功能 如果你点进来,那么我相信你应该知道微信的JS-SDK可以用来做什么了.微信的官方文档描述如下. 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. ...

  9. vue项目中实现复制内容到剪贴板

    项目中要实现分享功能,现在各种接口都关闭了,而且不同的浏览器要使用不同的代码,最后决定直接复制url,然后手动分享 Vue中使用了vue-clipboard2 github地址:https://git ...

随机推荐

  1. [git]使用Idea创建一个git项目

    第一次使用git的方法,如建立的项目名叫:my-webapp   第一步:在远程gitlab上建立空白项目:my-webapp 第二步:在本地建立项目my-webapp,添加代码 第三步:创建一个本地 ...

  2. kettle记录集(Merge Join)使用

    果两个表需要进行连接查询筛选出数据,那么可以使用记录集组件.(Merge Join). 使用之前要进行排序: 使用记录集之前,要对输入的两张表进行排序,如果不排序,会导致两张表连接的时候出现问题,关联 ...

  3. XLSX.js 导出Excel demo

    GitHub:https://github.com/SheetJS/js-xlsx 一个js操作Excel的工具,如下代码,很方便的就将json数据导出为Excel文件. 使用示例: //json 数 ...

  4. Python multiprocess模块(中)

    主要内容: 一. 锁 二. 信号量 三. 事件 通过event来完成红绿灯模型 四. 队列(重点) 队列实现进程间的通信 五. 生产者消费者模型 1. 初始版本(程序会阻塞住) 2. 升级版本一(通过 ...

  5. SQL引擎及事务支持

    查看当前表引擎 SHOW CREATE TABLE table_name MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类 ...

  6. 深入理解C语言-深入理解void

    void的字面意思是"无类型",void *则为"无类型指针",void *可以指向任何类型的数据 void含义 void几乎只有注释和限制程序的作用,定义一个 ...

  7. day22 subprocess、configeparser、表格操作模块

    今日内容: 1.configparser模块的使用 2.subprocess模块的使用 3.表格处理模块 xlrd模块 xlwt模块 1.configparser模块 configparser模块是用 ...

  8. Prefix to Infix Conversion

    Infix : An expression is called the Infix expression if the operator appears in between the operands ...

  9. linux各种IPC机制

    docker中的资源隔离,一种就是IPC的隔离.IPC是进程间通信. 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原 ...

  10. [转帖]差之毫厘谬之千里!带你认识CPU后缀含义

    差之毫厘谬之千里!带你认识CPU后缀含义 https://diy.pconline.com.cn/718/7189243_all.html 2015-11-16 00:15 出处:PConline原创 ...