首页 > 教程 >

JAVA微信公众号开发TOKEN验证失败怎么办?

2023-02-16教程围观

简介JAVA微信公众号开发TOKEN验证失败怎么办?JAVA微信公众号开发TOKEN验证失败的解决办法:微信公众平台服务器配置时,需要引入token,但是提交的时候总是提示token验证失败,是因为微信后台并未检测到你代码中有验证token的代码,那么应该按照官方文档对token进行验证,验证后再将结果返回微信公众平台即可。验证的代码为:publicclassSignUtil{privatestati

  

JAVA微信公众号开发TOKEN验证失败怎么办?


JAVA微信 公众号开发 TOKEN验证失败怎么办?

JAVA微信公众号开发TOKEN验证失败的解决办法:

微信公众平台服务器配置时,需要引入token,但是提交的时候总是提示token验证失败,是因为微信后台并未检测到你代码中有验证token的代码,那么应该按照官方文档对token进行验证,验证后再将结果返回微信公众平台即可。

验证的代码为:

public class SignUtil {    private static String token = "WnbVm6GTQj4BPmLliSday4K";//这里是自定义的token,需和你提交的token一致    /**    * 校验签名    *     * @param signature 签名    * @param timestamp 时间戳    * @param nonce 随机数    * @return 布尔值    */    public static boolean checkSignature(String signature, String timestamp, String nonce) {        String checktext = null;        if (null != signature) {            // 对ToKen,timestamp,nonce 按字典排序            String[] paramArr = new String[] { token, timestamp, nonce };            Arrays.sort(paramArr);                       try {                MessageDigest md = MessageDigest.getInstance("SHA-1");                // 对接后的字符串进行sha1加密                byte[] digest = md.digest(content.toString().getBytes());                checktext = byteToStr(digest);            } catch (NoSuchAlgorithmException e) {                e.printStackTrace();            }        }        // 将加密后的字符串与signature进行对比        return checktext != null ? checktext.equals(signature.toUpperCase()) : false;    }    /**    * 将字节数组转化为16进制字符串    *     * @param byteArrays 字符数组    * @return 字符串    */    private static String byteToStr(byte[] byteArrays) {        String str = "";        for (int i = 0; i < byteArrays.length; i++) {            str += byteToHexStr(byteArrays[i]);        }        return str;    }    /**    * 将字节转化为十六进制字符串    *     * @param myByte 字节    * @return 字符串    */    private static String byteToHexStr(byte myByte) {        char[] Digit = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };        char[] tampArr = new char[2];        tampArr[0] = Digit[(myByte >>> 4) & 0X0F];        tampArr[1] = Digit[myByte & 0X0F];        String str = new String(tampArr);        return str;    }}

提交时公众平台会请求你的地址,并校验你是否在后台做了验证,验证部分:

if (StringUtils.isNotBlank(request.getParameter("signature"))) {    String signature = request.getParameter("signature");    String timestamp = request.getParameter("timestamp");    String nonce = request.getParameter("nonce");    String echostr = request.getParameter("echostr");    LOGGER.info("signature[{}], timestamp[{}], nonce[{}], echostr[{}]", signature, timestamp, nonce, echostr);    if (SignUtil.checkSignature(signature, timestamp, nonce)) {        LOGGER.info("数据源为微信后台,将echostr[{}]返回!", echostr);        response.getOutputStream().println(echostr);    }}

以上就是JAVA微信公众号开发TOKEN验证失败的解决办法。



下载链接:网站源码/小程序源码/网站模板下载

Tags: 微信 公众 开发 怎么办 验证