iphone X中react-router单页面如何有效配置微信 解决iOS中invalid signature问题 the permission value is offline verifying

iOS中,在某个页面内调用微信JSSDK相关API,如扫码、分享等,使用当前页面URL总会出现签名错误(invalid signature),导致API调用失败。

在JSSDK文档页面有这么一句话:

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

但事实是通过window.location.href拿实时地址进行微信配置,安卓上是ok的,iOS则不行

通过打印信息,iOS上把前端路由地址解析错了,那么可以考虑自己手动组装地址。。。
一个完整的URL(比如:http://localhost:3000/ppp/index.html?search=wbiokr#/home?query=haha)包括:

origin: "http://localhost:3000"
pathname: "/ppp/index.html"
search: "?search=wbiokr"
hash: "#/home?query=haha"

那么iOS下可以自己组装页面URL:

const { origin, pathname, serch, hash } = window.location;
const url = `${origin}${pathname}${search}${hash}`

然后进行微信配置:

getWxSing({
  url
})
.then((res: Common)=>{
  window.wx.config({
    debug: false, 
    appId: res.appId, 
    timestamp: res.timestamp, 
    nonceStr: res.noncestr, 
    signature: res.signature,
    jsApiList: ['scanQRCode'] 
  });
})

问题解决

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值