收藏
回答

在web-view中引入的h5页面中调用微信接口的jssdk

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug web-view 微信安卓客户端 8.0.2 2.16.0

https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html

在web-view引入的h5页面中调用微信接口的jssdk,后端给的signature与用网页验证工具计算的signature一致,但是在开发工具中或者真机调试的时候依然报错63002 invalid signature无效签名,url为通过location.href.split('#')[0]获取的,值为https://dev.telyes.net/app.html,url后端在进行string1的字符串拼接时经过encodeURIComponent处理,小程序appId为wx18dbe43b91e51f0e,请帮忙查证一下具体问题原因

回答关注问题邀请回答
收藏

1 个回答

  • 社区技术运营专员-许涛
    社区技术运营专员-许涛
    04-07

    你好,请先自检:invalid signature签名错误。建议按如下顺序检查:

    1. 确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
    2. 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
    3. 确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
    4. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
    5. 确保一定缓存access_token和jsapi_ticket。
    6. 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

    若还有问题麻烦上传日志,补充微信号,时间点和机型

    04-07
    有用
    回复 2
    • ▄︻┻┳═一
      ▄︻┻┳═一
      星期五 17:39
      您好:
      1.签名算法是正确的,经过页面工具校验
      2.驼峰写法也没有问题
      3.url是host/app.html,已经把#后面的去掉
      4.appid是用的小程序的id,前后端一致
      5.后端对access_token和jsapi_ticket做过缓存
      6.url是通过location.href.split('#')[0]获取的,后端尝试过encodeURIComponent后的url和没有经过encodeURIComponent的url,两种方式都行不通
      星期五 17:39
      回复
    • 社区技术运营专员-许涛
      社区技术运营专员-许涛
      6小时前回复▄︻┻┳═一
      看一下微信打开的页面的url和使用签名工具去验证的url是不是一样的
      6小时前
      回复
登录 后发表内容
问题标签