300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众号修改服务器配置token验证失败

微信公众号修改服务器配置token验证失败

时间:2023-08-02 12:52:13

相关推荐

微信公众号修改服务器配置token验证失败

@微信公众号修改服务器配置token验证失败

微信公众号修改服务器配置token验证失败

新建SignUtil类

public class SignUtil {// 与接口配置信息中的 Token 要一致private static String token = "填写自己编的token";/*** 验证签名** @param signature* @param timestamp* @param nonce* @return*/public static boolean checkSignature(String signature, String timestamp, String nonce) {String[] arr = new String[]{token, timestamp, nonce};// 将 token、timestamp、nonce 三个参数进行字典序排序Arrays.sort(arr);StringBuilder content = new StringBuilder();for (int i = 0; i < arr.length; i++) {content.append(arr[i]);}MessageDigest md = null;String tmpStr = null;try {md = MessageDigest.getInstance("SHA-1");// 将三个参数字符串拼接成一个字符串进行 sha1 加密byte[] digest = md.digest(content.toString().getBytes());tmpStr = byteToStr(digest);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}content = null;// 将 sha1 加密后的字符串可与 signature 对比,标识该请求来源于微信return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;}/*** 将字节数组转换为十六进制字符串** @param byteArray* @return*/private static String byteToStr(byte[] byteArray) {String strDigest = "";for (int i = 0; i < byteArray.length; i++) {strDigest += byteToHexStr(byteArray[i]);}return strDigest;}/*** 将字节转换为十六进制字符串** @param mByte* @return*/private static String byteToHexStr(byte mByte) {char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};char[] tempArr = new char[2];tempArr[0] = Digit[(mByte >>> 4) & 0X0F];tempArr[1] = Digit[mByte & 0X0F];String s = new String(tempArr);return s;}}

创建Controller层

@Controller@RequestMapping("/wechat")public class WechatSecurityController {@RequestMapping(value = "/security", method = RequestMethod.GET)public void doGet(HttpServletRequest request,HttpServletResponse response,@RequestParam(value = "signature", required = true) String signature,@RequestParam(value = "timestamp", required = true) String timestamp,@RequestParam(value = "nonce", required = true) String nonce,@RequestParam(value = "echostr", required = true) String echostr) {try {if (SignUtil.checkSignature(signature, timestamp, nonce)) {PrintWriter out = response.getWriter();out.print(echostr);out.close();} else {System.out.println("这里存在非法请求!");}} catch (Exception e) {System.out.println(e);}}}

后台代码都写好之后就可以在微信后台设置中更改urltoken

注意:

url:这里的url填写的地址为域名+后台写接口的路径token:填写SignUtil工具类中的token

之后修改了域名之后需要还需要在公众号设置-功能设置-网页授权域名填写自己的域名

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。