{"code":30003,"hint":"not a valid datetime or too skewed. Date: Fri, 12 Jul 2024 10:03:22 GMT","extra":"","message":"InvalidSignature"}

阅读次数 19

图片转word地址:https://solution.wps.cn/api/developer/v1/office/img/convert/to/docx 不是刚开始对接,早就对接好了,动用了几个月都没问题,突然几个环境都不行了,报相同的错,通过社区用poastman也不行 本地时间代码: image.png
postman调试:
image.png

9 Answers

GMT 格林尼治时间,比如我们是东八区, {"code":30003,"hint":"not a valid datetime or too skewed. Date: Fri, 12 Jul 2024 10:03:22 GMT","extra":"","message":"InvalidSignature"}。 实际应该是 Date: Fri, 12 Jul 2024 02:03:22 GMT

详细看下这个问题,基本全都可以解决:https://solution-community.wps.cn/questions/10010000000003634/10020000000003646

这里已经明确说明了,详细查看这个问题讨论,java开发者遇到的签名问题,都可以解决

但是我打印时间,其实是跟我们的时间是一致的,而且我们之前都是可以的,用了几个月没问题,昨天突然有问题的

按你们给的脚本postman调试也不行 image.png

你好,脚本是按照上面文档里粘贴的吗? 对应的appid 和appkey是否正常设置,如果还是有问题可以提供下你们的curl请求来辅助你们分析哈

正常设置,如果不正常应该有错误响应吧

可以提供下你们的curl请求哈

image.png 下面的XXX是开放平台申请的; let access_key = "XXX" let secret_key = "XXX"

wps2(pm.request, access_key, secret_key)

function wps2(request, ak, sk) { let content_type = "application/json"

let date = (new Date()).toUTCString()

let content_md5 = request.body.raw 
? CryptoJS.MD5(request.body.raw).toString()
: CryptoJS.MD5(request.url.getPathWithQuery()).toString()
  
let signature = CryptoJS.SHA1(sk+content_md5+content_type+date).toString()
let authorzation = `WPS-2:${ak}:${signature}`
console.log('date',date);
console.log('content_md5',content_md5);
console.log('signature',signature);
console.log('authorzation',authorzation);

// setup variable
pm.request.headers.add({
    key: 'Date',
    value: date
});
pm.request.headers.add({
    key: 'Content-Type',
    value: content_type
});
pm.request.headers.add({
    key: 'Content-MD5',
    value: content_md5
});
pm.request.headers.add({
    key: 'Authorization',
    value: authorzation
});

}

你这content-type 不对吧 ,你header里设置的是application/json 用的是form-data

不好意思,搞错了,postman可以了,但是我代码还是有问题,我看时间也是当前时间往前推了8个小时,报错为{"code":30003,"hint":"signature not match. expect: 5c5c91184ef4c857dd271ef20f84d6cff37d8ee0, actual: 5f708b86e1e58ccf1ac2c98cf5cc687720f077f6","extra":"","message":"InvalidSignature"}

image.png image.png image.png

你可以根据postman先自查下哈 ,对比看下哪个参数有问题

对比过了,不然也不会麻烦你了,是hutool的SecureUtil.md5()和SecureUtil.sha1()跟你们不匹配吗

我看你们是content md5校验没过,建议可以把postman和你程序代码里算md5的过程(签名原body的内容)每个step打印出来对比下哈

可以了,但是我之前一直用的application/json都是可以的,而且你这开放平台接口文档也是这么写的啊 image.png

文档写的没问题呢,weboffice getHeader('content-type')拿到什么就计算什么。你的代码传的是application/json,实际上java框架http模块发送,自动加了charset,导致您没了解框架内部运行原理,您计算用的application/json

我也遇到了相同的问题 ,一直没动过代码,突然不行了