iOS微信JSSDK授权签名错误及图片选择兼容
转载请注明出处:https://blog.csdn.net/hx7013/article/details/143502680
一、项目概述
Vue3+Vite+Vue-Router 4+JS-SDK 1.6
由于之前开发调试都是在微信开发者工具及 Android 平台,后上线前测试发现 iOS 平台会出现 invalid signature 及图片选择后预览失败的问题。
查询资料后逐步解决,重新整理了下问题原因,及修复的详细代码和说明。
二、iOS 签名错误 invalid signature
由于我 vue-router 使用的是 history 模式,页面跳转后在iOS使用 window.location.href 获取到的地址签名后 wx.config 会报错 invalid signature ,使用 微信 JS 接口签名校验工具 对比过,确认签名无误,但是还是会报该错误。各种查询后得知传给后端签名的URL地址 iOS 在 vue-router history 模式下,需要传刚进入的页面url, Android可以实时window.location.href取当前url。
-
解决方法1:
vue-router改为hash模式。(实际就是保证了地址的不变,但是不推荐该做法,对于我这边来说,对现有项目影响较大) -
解决方法2:
存储首次启动时的地址,获取JSSDK签名时判断是iOS还是Android,区别传入首次进入的地址或当前地址即可。
解决方法2代码:
- 工具类
WxUtils.ts
/**
* iOS微信内JSSDK授权需提交启动地址
*/
export const WX_ENTRY_URL_TAG = 'wxEntryUrl'
/**
* 是否为微信浏览器
*/
export function isWxBrowser() {
const ua = navigator.userAgent.toLocaleLowerCase()
return /micromessenger/.test(ua)
}
/**
* 是否为iOS浏览器
*/
export function isIOSBrowser() {
const ua = navigator.userAgent.toLocaleLowerCase()
return /iphone|ipad|ipod/.test(ua)
}
/**
* 获取JSSDK授权地址
* App.vue -> sessionStorage.setItem(WX_ENTRY_URL_TAG, window.location.href)
*/
export function loadJSSDKUrl(): string {
let sdkUrl = window.location.href
6022




被折叠的 条评论
为什么被折叠?



