这么晚了(1点半了), 我还在这敲键盘.
我家老板带着女儿,今天的车票回娘家, 要在家办公, 昨天晚上说订单同步不了, 这TM真是急时雨啊!
前天(15号)晚上9点差不多, 我还在同步, 卵问题没有.
打开源码调试了一下, 说是 invalid signature , 无效的签名. 签名在 SMT 的 API 里总共就两地方使用:
1, 获取授权码, 即登陆后返回的授权码.
2, 调用 API 时, 要做为参数.
登陆/获取授权码, 获取 refresh_token 都没有任何问题. 检查了一圈, 是要这样改:
原来的:
改之后的:
即调用 API 的时候, 还要把 URL 中的一部份也做为签名计算的一部份.
而获取授权码则不用.
这 TMD 是有病吗? 要改都改, 要不改都不改. 改成现在这个鸟样, 搞笑吗?
(可能现在获取授权码不需要签名吧, 我没试, 早先的文档中说是需要的).
这样改完后, 部分API 方法调用成功, 部份仍然是 invalid signature.
规律是: 不带参数 (或有参数, 但是没填写)的 API 方法调用是成功的, 否则是失败的:
这又是闹哪样? 试了 SMT 提供的 API Test 工具, 发现一个问题:
无论是 POST 还是 GET 的, API 的参数都拿进去计算签名了!
不是说好的是 POST 的吗? 为啥还要放到 URL 里?
1, 是不是不在接收 Post 的调用了?
2, 你们提供的 API 测试工具中, 即使 POST , API 参数还是参与了 签名的计算.
3, 如果不拿这些参数参与计算签名, 结果还是 invalid signature , 把这些参数参与进去就没有问题了.
4, 不带参数的API 是不会有问题的.
5, 如果这样, 那提交图片的, 尼妈, 我还真不知道如何把图片给计算进去! (检查了一遍, 图片不是通过参数提交的.)
----------------------------
上次遇到的问题是获取授权码的时候, 要刷验证码, 搞得我差点把 WebBrowser 都给搬上来了, 结果多线程里无法使用...
我一个客户端程序, 自己写的自己用, 获取授权码, 你还让我刷个验证码, 这产品经理的脑袋一定是进水了.
我在 SMT 论坛里骂了几句, 这个验证码就取消了(最近两个月没有在遇到要验证码了.)
遇到问题给他们发邮件咨询, 从来都没有回过的!
那个论坛摆那里就是为了别人上去打广告的, 发的贴子除了发广告的回复, 鸟的支持没有一个回复的!
---------------------------
完, 纯吐槽。。。
有 SMT 的人看到后请在你们内部传播, 记住我说的: 你们的产品经理脑袋进水了!