参数:
access_token:75_Z80V_-_Tqd9pLYXdVvr8UfbwVAPOEC36h6jbE9z35IWtlCCEXcNr8P3NUXBNLAMOUZFUIAM2Qhg5ri6HIteK4WqtjkP9b_J9cuOJLvejlS5cPgTB4iqhwf8TU9cAFUeADAJOD
openid:oZeIR0WhrKYK4sUde-ETXObpc-I0
signature:ab9193c40b5ffb84bda074d8468caf5981fa9990f5b46736b2e01100fe6a7a05
sig_method:hmac_sha256
这些参数不是 form body ,请将参数填写在 params 中。
问题是怎么解决的
我确认access_token、openid都是正确无误的,signature的实现代码如下:
public static void main(String[] args) {
try {
String secretKey = "vTLGsnYI6fqOFqRmTocWlQ=="; // 替换为实际的密钥
String data = ""; // 空串
// 使用HMAC SHA-256算法
Mac sha256Hmac = Mac.getInstance("HmacSHA256");
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
sha256Hmac.init(secretKeySpec);
// 计算HMAC值
byte[] hmacBytes = sha256Hmac.doFinal(data.getBytes(StandardCharsets.UTF_8));
// 将HMAC值转换为小写的hex字符串
StringBuilder hexStringBuilder = new StringBuilder();
for (byte b : hmacBytes) {
hexStringBuilder.append(String.format("%02x", b));
}
String hexHmac = hexStringBuilder.toString();
System.out.println("HMAC SHA-256: " + hexHmac);
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
e.printStackTrace();
}
}
尝试了很多遍,大写小写各种都试过了,就是不行,invalid signature,恳请官方有没有人给看一看,找不到其他问题了,也不知道那从哪开始排查问题了