微信js sdk invalid signature签名错误 问题解决。

转载 2015年06月06日 15:52:37

转自:http://my.oschina.net/u/2308739/blog/371414

1
2
3
/**最近在做微信js sdk 接口调用说明*/
***相信很多人都遇见像我这样的问题,再加上自己只能算是半个程序员,所以苦苦摸索了好久终于搞懂了。
****下面就把自己所遇见的各种问题和大家分享一下,都是自己亲手实验过的********/

错误一、invalid signature

如果出现 invalid signature,首先可以确定的是你的签名算法有问题。

建议:首先查看微信官方网站给出的解决方案,链接为 http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

  1. invalid signature签名错误。建议按如下顺序检查:

    1. 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。也就是你自己后台生成签名要和微信校验算法生成的签名一致才可以(可能大小写不同)。

      注意:

      签名生成规则如下:

      参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的当前时间戳), url(当前网页的URL,不包含#及其后面部分。注意:对于没有只有域名没有 path 的 URL ,浏览器会自动加上 / 作为 path,如打开 http://qq.com 则获取到的 URL 为 http://qq.com/)。

      特别注意:你在利用参数生成签名的时候,要对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 string1。这里需要注意的是所有参数名均为小写字符。

      我的最开始的错误就是没有注意到生成签名的那几个参数要按照key=value的样式连接成一个字符串,然后在sha1加密生成。

    2. ?
      1
      /****Java写的参数拼接算法***/
    3. ?
      1
      2
      3
      4
      5
      6
      7
      String[] paramArr = new String[] { "jsapi_ticket=" + jsapi_ticket,
                      "timestamp=" + timestamp, "noncestr=" + nonce, "url=" + jsurl };
      Arrays.sort(paramArr);
      // 将排序后的结果拼接成一个字符串
      String content = paramArr[0].concat("&"+paramArr[1]).concat("&"+paramArr[2])
                      .concat("&"+paramArr[3]);
      System.out.println("拼接之后的content为:"+content);
    4. 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。

    5. 确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。

    6. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。

    7. 确保一定缓存access_token和jsapi_ticket。

    8. 确保你获取用来签名的url是动态生成的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败

    错误2、每次后台网页更新之后,微信访问效果没有出来。

    问题:手机端,网页缓冲导致。

    解决方案:重启手机,再试一下。

    错误3、微信分享接口,可以在自己的网页上面自定义一个按钮,当用户点击的时候完成分享。

    问题:我最开始也是这样想的,后来发现,原来不是这样的,只有当你用微信客户端打开,在最上面右边的 “分享到朋友圈”按钮按的时候效果才会出来。

    错误4、微信图像接口 permission denied

    首先查看微信给出的错误说明:该公众号没有权限使用这个JSAPI(部分接口需要认证之后才能使用)。

    说明:只要通过了公众号认证,都不会有问题。

    检查对象:如果出现这个说明程序上基本上不会有问题 微信后台已经返回了数据。

    第一、要检查 你的config 文件中相应的 jsapilist  是否包含了该接口哟。

    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    wx.config({
              debug: true,
              appId: 'wxaab709a7aef25dda',
              timestamp:data.timestamp,
              nonceStr:data.nonce,
              signature:data.signature,
              jsApiList: [
              'checkJsApi',
              'onMenuShareTimeline',
              'onMenuShareAppMessage',
              'onMenuShareQQ',
              'onMenuShareWeibo',
              'hideMenuItems',
              'showMenuItems',
              'hideAllNonBaseMenuItem',
              'showAllNonBaseMenuItem',
              'translateVoice',
              'startRecord',
              'stopRecord',
              'onRecordEnd',
              'playVoice',
              'pauseVoice',
              'stopVoice',
              'uploadVoice',
              'downloadVoice',
              'chooseImage',
              'previewImage',
              'uploadImage',
              'downloadImage',
              'getNetworkType',
              'openLocation',
              'getLocation',
              'hideOptionMenu',
              'showOptionMenu',
              'closeWindow',
              'scanQRCode',
              'chooseWXPay',
              'openProductSpecificView',
              'addCard',
              'chooseCard',
              'openCard'
              'onMenuShareWeibo',
              'hideMenuItems',
              'showMenuItems',
              'hideAllNonBaseMenuItem',
              'showAllNonBaseMenuItem',



微信jsapi支付验证签名失败

微信jsapi支付验证签名失败
  • zjy660358
  • zjy660358
  • 2016年11月26日 16:24
  • 7294

微信公众号支付 JSAPI 提示签名验证错误的解决方案

在测试微信公众号支付的时候一直返回 签名验证错误 找了好久错误也解决不了。 在网上找了一大堆资料,终于找到了解决方案 答案就是,加密方式错误了。 如果在统一下单的时候,不填写sign_type...
  • dangsh_
  • dangsh_
  • 2018年01月25日 21:10
  • 118

微信js sdk invalid signature签名错误 问题解决。

转自:http://my.oschina.net/u/2308739/blog/371414 1 2 3 /**最近在做微信js sdk...
  • wyx100
  • wyx100
  • 2015年06月06日 15:52
  • 5989

微信jssdk 签名错误排查方法

最近手头业务,移动端页面在微信浏览器中分享转发的时候没有缩率图,只有标题和链接,如下: 无缩略图的情况    按照微信的官网自定义分享功能,引入jssdk ,结果调试,一直报错 签名错误,inva...
  • bboyjoe
  • bboyjoe
  • 2017年11月06日 14:37
  • 435

微信js sdk invalid signature签名错误

准备工作也说一下 获取accesstoken: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183&token=&l...
  • bestcxx
  • bestcxx
  • 2016年04月20日 11:18
  • 3108

微信JS-SDK 调用config 出现invalid signature签名错误的部分解决方法

网络中常见的问题,都有提到这里就不说了,我只提一下自己出现invalid signature签名错误的解决方法 在我解决了一系列参数值的获取问题后,在传入配置的时候还是出现了invalid signa...
  • et198901
  • et198901
  • 2016年02月18日 09:31
  • 12496

微信JS-SDK Demo 实现 invalid signature错误详解

  • 2015年03月06日 17:51
  • 124KB
  • 下载

关于前端微信分享jssdk config:invalid signature 签名错误

关于前端微信分享jssdk config:invalid signature 签名错误这几天刚刚把微信写完,说出来你可能不信,我写个微信分享一起用了2个礼拜。中间各种心酸,一开始后台老大哥帮我把后台签...
  • StevenTang957
  • StevenTang957
  • 2017年08月25日 11:29
  • 1856

微信公众平台开发,微信JS-SDK对接invalid signature报错解决

笔者在做微信JS-SDK学习过程中,用微信打开页面时总是弹出invalid signature的errmsg,笔者在开发文档和网友提供的解决方法中苦苦搜寻,好在功夫不负有心人,经历一上午的苦苦挣扎总结...
  • intersting
  • intersting
  • 2016年08月31日 14:24
  • 1687

微信公众平台开发,微信JS-SDK对接invalid signature报错解决

微信公众平台开发,微信JS-SDK对接invalid signature报错解决 简介: 2015年大约1月多微信发布JS-SDK,功能强大,当然BUG也有不少 背景说明: 一:问题背景 笔者...
  • boss_2012
  • boss_2012
  • 2015年01月16日 17:11
  • 4612
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信js sdk invalid signature签名错误 问题解决。
举报原因:
原因补充:

(最多只允许输入30个字)