微信jssdk 签名错误排查方法
来源:互联网 发布:康生书法 知乎 编辑:程序博客网 时间:2024/05/16 08:31
最近手头业务,移动端页面在微信浏览器中分享转发的时候没有缩率图,只有标题和链接,如下:
按照微信的官网自定义分享功能,引入jssdk ,结果调试,一直报错 签名错误,invalid signature。
按照微信公众平台的开发文档,签名错误排查方法如下:
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),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
通过微信签名工具验证,完全符合。前端config 的nonceStr 也无写法错误,非常纳闷。
如果后台返回的config 信息 与微信签名工具校验一致的话,那很有可能是前端访问的url和后台生成签名的url不一致导致,
通过前后台打印分析,url 地址完全一致。我做的是前端传递url给后台,后台接收到的url参与生成签名。这时候注意到,前端传递的url地址是经过 encodeURIComponent的,所以后台接收到需要 decode 一下,比如php 可以用urldecode 函数,再一尝试,成功。。。。。。。
总结如果出现 invalid signature,首先可以确定的是你的签名算法有问题。
签名错误的排查可以这样来:
1:确保基本的appid 正确,获取的access_token和jsapi_ticket 正确
2:校验签名,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
3:如果签名一致,那问题基本出在浏览器访问的url和参与生成签名的url不一致。
最后附上jssdk的步骤
1:在微信公众号后台配置js 安全域名,即需要引入jssdk的页面域名。 需要在域名根目录下放置微信的检测文件。
2:配置出ip白名单
3:后台开发人员生成签名传递给前台
4:前端页面引入script方式 jssdk文件
5:通过ajax获取config 配置,完成config 配置后即可使用jssdk的各项功能了
原文地址:http://www.jianshu.com/p/341e80e21383
- 微信jssdk 签名错误排查方法
- 微信jssdk config:invalid signature 签名错误 ,问题排查过程
- jssdk调用微信支付时提示“商户签名错误”
- 微信jssdk config:invalid signature 签名错误
- 微信JSSDK invalid signature签名错误记录
- 微信分享JSSDK-invalid signature签名错误的解决方案
- 微信公众号开发之JSSDK:记config:invalid signature 的错误排查
- 微信JSSDK之签名生成
- 微信签名及jsSDK的使用
- 微信JSSDK-php-签名实现
- 关于前端微信分享jssdk config:invalid signature 签名错误
- 微信jssdk常见错误及解决方法
- 微信JSSDK 突然出现invalid signature无效签名
- ios 调用微信JSSDK 签名失败解决方法
- javascript jssdk退出微信的方法
- 微信 JSSDK
- 微信JSSDK-demo
- 微信JSSDK使用指南
- gradle打jar包,并运行包中有main方法的类
- Java微服务开发指南 -- 使用Spring Boot构建微服务
- Top 10 questions of Java Strings
- Ip转换为数字,正则匹配ip
- HotSpot JVM收集器
- 微信jssdk 签名错误排查方法
- casServerMd5加密(前台/后台)
- 二分模板
- Java StringBuffer & StringBuilder 源码分析
- 商品购买
- 有道云笔记中用图框和线条表达逻辑
- 大数据分析JavaOne2017
- 【JVM】8_对象优先在Eden分配
- 封装 shared::mutex