ios验签报错,微信公众号ios和android验签的区别

news/2024/7/24 3:01:27

首先看看验签代码,首先说明,这是vue项目用的是history模式
在这里插入图片描述

ios

ios验签的时候,只认入口页的地址url,包括参数(比如:http://1454657xn5.imwork.net/?token=dsj54958490nfdgnjg)原则上官方也说了,同样的地址只需验签一次,所以你ios只在入口页验签一次,页面路由再怎么变化也和你没关系。
很多网友说ios路由跳转的时候url不变化,但在实际操作中alert了每个页面的地址,是变化的,但是但是但是!!,他只记住了入口页地址,ios他只认入口页的地址,只认入口页!!!所以导致分享出去的时候,永远分享的是入口页。
当然你可以重复验签(每次验签的url都必须和入口页一模一样),只要你再次验签的url和入口页不一样,就会报错无效签名

android

安卓并没有这些毛病,所以在页面路由变化的时候,传参完整的地址url,再次验签就好

hash和history模式

还有大家都讨论的hash和history模式,这里强烈推荐配置成history,这样一来,验签传url的时候就不用做任何分离,直接传完整的url(window.location.href)。
这里url官网有一些说明是这样的:
在这里插入图片描述
由此可以看出,它只是让你去掉hash,前面的域名以及后面的参数都是要的(比如:http://1454657xn5.imwork.net/detail?roomId=1),所以直接配置成history模式,他是没有hash的,传完整且动态获取(因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败)的地址即可。

总结

为了兼容ios和android,要在项目入里判断机型,如果是ios那就只在入口页验签一次,安卓则在路由变化的时候验签。(验签成功了,但是这样一来就会牵扯到分享页面路径问题,下次说)

android:对需要调用jsapi接口的每个页面路由验签
ios: 只对入口页路由验签


一个小提示:毕竟微信总是时不时有些小问题,社区也可以去看看,所以在刚开始进行验签的时候,它会莫名的一会成功一会失败,反正我是这样,后来就好了,不知道是不是普遍问题。

欢迎指正提问~


http://www.niftyadmin.cn/n/1845219.html

相关文章

解决后加载页面赋值不渲染问题

1.问题原因:当前页面刷新,会关闭主页面,之后当前页面跳转到主页面并且赋值给主页面进行渲染,因为跳转过程中,赋值与页面加载同时进行,页面回流和重绘较多,可能造成资源阻塞,没有及时…

vue微信公众号支付过程-详解

关于验签看这篇博客即可,这里不做赘述,签名的时候打开debug用微信开发者工具查看错误,主要说支付过程(当然必须验签成功后)。 下载依赖 NPM库 npm install weixin-jsapi引入 import wx from weixin-jsapi拉起支付 // 点击立即支付按钮 pa…

c语言如何读取以逗号分隔的txt文件

c语言如何读取以逗号分隔的txt文件 #c语言如何读取以逗号分隔的txt文件,如: "站南路","" “工业路”,"" “”,"" “”,"" “人民路”,"" “”,"" “”,"" “”,"…

ARCMAP点集转线工具提示999999错误

ARCMAP点集转线工具提示999999错误解决方法: 1.将输出文件的路径改为文件夹,而非文件地理数据库。 2.如用到线字段,线字段内容必须为非中文。 3.选中全要素,或一个要素也不选取,但保证要素可视化。

修改vue项目中 elementUI input边框样式

需要去掉input边框。 直接在含有 scoped属性的style中修改,是不起作用的。在一个不含scoped属性中 解决方案一: 在开发过程中遇到需要去掉 el-input的边框,使其满足ui要求,element-ui官网的el-input的样子如下: 但…

表单校验使用forEach提交表单时如何终止循环,解决element消息提示重叠

1.使用try{ //forEach循环体 }catch(error){},循环体中使用throw new Error(end) // 终止循环 如下: try {this.list.forEach(item > {.....throw new Error(end)}) } catch(err) {console.log(err,err)} // 实例confirm() {try {this.questions.s…

vue表单中动态控制样式的几种方式

1.三木运算&#xff1a; <div :class"item.isTrue ? className1 : className2"></div><style> .className1{ .... } .className2{ .... } </style>2.变量控制 <div :class"{className: item.isTrue"></div><sty…

vue+ elment UI全局配置加载中状态

项目中多处会使用到一些共用的状态样式&#xff0c;这里简单写一个全局暴露的loading。 首先在项目共用文件夹common下定义一个loading.js文件&#xff1a; // loading.js import { Loading } from element-ui;let loadingCount 0; let loading;const startLoading () > …