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

互联网 20-6-13

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视频教程》

以上就是JAVA微信公众号开发TOKEN验证失败怎么办?的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: token
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:java向mysql数据库插入数据显示乱码怎么办?

相关资讯