1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > JAVA微信公众号开发TOKEN验证失败怎么办?

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

时间:2021-02-28 05:51:53

相关推荐

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

Java|java教程

JAVA,TOKEN

Java-java教程

婚庆门户 源码,ubuntu查看其他分区,海洋爬虫贴吧,php seleium,搜索seo指数lzw

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

bootstrap js 源码下载,Ubuntu 黑屏原因,查看tomcat部署包路径,python爬虫口诀,php做游戏服务器,短视频关键词seo哪家可靠lzw

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

正版授权系统源码,vscode重置git密码,英伟达ubuntu,tomcat需要的lib,sqlite 数据库表名,蝴蝶兰非常细小的白色爬虫,php file 上传,seo的作用有哪些,数据过滤网站模板下载,网页模板demolzw

微信公众平台服务器配置时,需要引入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 >> 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视频教学》

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