最近有朋友在用淘宝的API做东西,开发完成从沙箱迁移去正式环境,相同的代码得到错误提示Invalid Signature。
去open.taobao.com翻了一下文档,有一篇签名的生成规则,恩,淘宝制定了一套规范来生成signature,也就是http请求中sign参数的值。
规范本身很简单,只是很难书面描述清楚,给个例子,假设http请求是:http://gw.api.taobao.com/router/rest?app_key=1234567&product=name,price,id&method=product.search&sign_method=md5&v=2.0
需要做以下事情来生成signature:
1。把http的所有参数,也就是http://gw.api.taobao.com/router/rest?后面的东西,拷下来作为一个string,然后去掉所有的"&"和"=",得到字串:app_key1234567productname,price,idmethodproduct.searchsign_methodmd5v2.0
2。把淘宝给你的app secret加在字串的前、后,假设secret是“taobao_app_secret”,那么得到字串就是:
taobao_app_secretapp_key1234567productname,price,idmethodproduct.searchsign_methodmd5v2.0taobao_app_secret
3。对刚才得到的字串做md5,得到摘要,就是signature,假设得到abcdef。然后需要在http请求后加一个&sign=abcdef
朋友试过N次,仍然得到Invalid signature,看了看程序,md5结果应该是对的。仔细对照淘宝api工具生成的请求,发现一个陷阱。淘宝服务器收到请求后,会做一个校验,也就是把刚才生成signature的过程做一边,如果得到的signature与你上传的sign参数的值不同,就会得到一个invalid signature错误。而这里的陷阱在于,淘宝服务器会先对http参数做一个排序,如果你本地的排序与淘宝不同,那么signature当然不会对。
利用淘宝的api测试工具可以很容易的看到它的排序:
例如某个api的顺序就是这样滴:
app_key=1234567
format=xml
method=taobao.shopcats.list.get
sign_method=md5
timestamp=2010-06-22 11:04:15
v=2.0
sign=AD64DFFCBB86FF3839E6468BB490B404
照着它的顺序做了调整,done.
然则。。。为毛在测试环境没发现这个问题捏??试了一把,淘宝沙箱里面,signature怎么写都没关系,测试服务器不会校验这个。不专业呀。。。。
分享到:
相关推荐
微信JS-SDK Demo代码 invalid signature错误详解在readme里面
InvalidSignature-The signature is invalid(解决方案).md
微信分享invalid signature签名错误,是很多开发者在集成微信JS-SDK时可能遇到的问题,本文将深入解析这一错误及其解决方法。 ### 1. 签名算法的确认 当遇到invalid signature错误时,首先需要确认使用的签名算法...
然而,当遇到“Invalid header signature”错误时,它意味着POI无法识别文件的头部信息,这通常是由于文件损坏、不兼容的格式或编码问题导致的。现在,我们来详细探讨这个问题及其解决方案。 首先,我们需要理解...
但是,在实际开发过程中,开发者可能会遇到"invalid signature"的签名错误问题。这一问题表明了生成的签名与微信服务器的签名验证结果不一致,导致接口调用失败。 解决"invalid signature"签名错误问题,首先需要...
微信分享JSSDK-invalidsignature签名错误的解决方案.docx
然而,在实际开发过程中,可能会遇到“invalid signature”错误,这通常是因为签名生成不正确导致的。以下将详细介绍如何在Vue.js中使用微信扫一扫并解决invalid signature问题。 首先,我们需要在Vue组件中添加一...
最近在搞微信公众号开发,进行到网页开发部分被坑了一天,最坑的问题就是invalid signature,而网上大部分解答这个问题的都没有说清楚,都直接丢文档。博主认为这样很不好。本文是博主结合自身遇到的问题所写,整个...
主要介绍了微信jssdk踩坑之签名错误invalid signature,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了微信 jssdk 签名错误invalid signature的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
invalid LOC header (bad signature)问题解决,快速查找与删除有问题的jar包
基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。问题出在用户B收到的分享链接与用户A打开的链接不同 A用户的链接为 ...B用户收到的连接 ...
"Invalid Syntax"错误是编程语言中常见的一个错误类型,它表示你的代码中存在不符合该语言语法规则的部分。在Python这种解释型语言中,当解释器遇到无法理解的代码结构时,就会抛出"Invalid Syntax"错误。这个错误...
"Invalid syntax"错误是编程语言中非常基础但关键的一个错误类型,主要出现在Python等解释型语言中。这个错误表示你的代码中存在不符合语法规则的部分,导致编译器或解释器无法理解你的意图。在Python中,语法是极其...
Delphi 10.3 ,程序运行到DataModule2.ClientDataSet1.ApplyUpdates(0);语句时,提示“Invalid parameter”错误
前端小菜鸟,因为项目要对接微信的jssdk,对接就需要签名认证,但是无奈安卓和IOS各有各的坑,本篇文章只讨论签名,和一个分享的坑,希望大家有所收获,能够解决问题,如果解决不到,请麻烦在评论区留言,本文综合了...