{
"success": false,
"msg": "无法识别的认证信息"
}
2
3
4
解决方案:
如果是 Postman 调用,检查 basic 鉴权是否正确?见下图
检查 HTTP header 参数传入 apiKey 是否正确且做 base64 加密处理?
示例: 'Authorization: Basic NzQ2OGQ1ZmFhNzIyYWU1ZDYxM2NiMzM6'
Q:如何解决 OpenAPI 调用签名失败
{
"code": 200002,
"msg": "正确的 sign = aJoFweTV9BCfVrIXCZ/MzKO+2fNTTWTMMOEEuVU6za44p+L0n+pL+CLeFJtRCkzpfIrzIB0S0/BY4iOiXnWVMEoJnRm30xZlE3yDofzHXKvJ+I1iQkIW7XhiJMRp5BLwue9qjwlOEcVAbhoQAG7N5HOJB65TIAMb+Gu0H6NneLo= , 但是您的 sign = K0G+oqkqT5pQmSdCkxLiT2hMQI7Ir8drDcReaOk3x9ZHOTDDI5P++nGAZXLUdN0EY98Og2UO+Y5bjnLEsSR657K86iAw4vAkge95NCH/ZnrhsLh/3BPu7IihNWsT1dmDLiH4yHlfRobOaz/Ve4YJeN5Rw/4/Xa8DDgQTXJUm5eA=。需要被加密的 string 是 = apiCode=2bc207586a1d5801dafe16580053e3d9&entCode=5c1b8165cedfaba1a83136c1fb3c1b45&nonce=9poe8b0v&timestamp=1663756978879&userName=cherryok@126.com",
"data": {}
}
2
3
4
5
解决方案:
检查签名的字符拼接顺序是否正确?检查参数值是否正确?
示例(无 username 参数):
apiCode=0001&entCode=1&nonce=999×tamp=1565244098737
示例(有 username 参数):
apiCode=0001&entCode=1&nonce=999×tamp=1565244098737&userName=xiao@qq.com
检查 sign 是否进行了 URLEncode 编码处理?如做了处理 sign 中的+ 将转换为格式%**
示例:eqNyKRZA1uOdKx02RIF%2B4BaIAtRfvjrStrYsfXMh4vau2KHPe%2FseOMHkBLzX9JVgzGnne6ra4yk33QDpLZN325PUtXMKyM61YjR6YZ4zC5KwQus0lfZjE%2FTrJJjL0MR7dz6i%2FIoEkmIRumOIm%2FLaZFXxrFmdMpHV6EdBbv8raqE%3D
注意:RestTemplate 发送 http 请求会自动解码,请使用 okhttp、httpclient 组件