微信公众号获取token失败是什么意思,微信小程序token验证失败
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
JAVA微信公众号开发TOKEN验证失败怎么办?
JAVA微信公众号开发TOKEN验证失败的解决办法:
微信公众平台服务器配置时,需要引入令牌,但是提交的时候总是提示代币验证失败,是因为微信后台并未检测到你代码中有验证代币的代码,那么应该按照官方文档对代币进行验证,验证后再将结果返回微信公众平台即可。
验证的代码为:
公共类别标志{
私有静态字符串令牌= wnbvm 6 gtqj 4 bpml lisday 4k//这里是自定义的令牌,需和你提交的代币一致
/**
* 校验签名
*
* @param签名
* 签名
* @param时间戳
* 时间戳
* @param nonce
* 随机数
* @返回布尔值
*/
公共静态布尔检查签名(字符串签名、字符串时间戳、字符串随机数){
字符串checktext=null
if (null!=签名){
//对令牌、时间戳、随机数按字典排序
String[]para marr=new String[]{ token,timestamp,nonce };
数组。排序(para marr);
尝试{
消息摘要MD=消息摘要。getinstance( SHA-1 );
//对接后的字符串进行sha1加密
byte[]digest=MD . digest(内容。tostring().getBytes());
检查文本=字节tostr(摘要);
} catch(nosuch算法异常e){
e。printstacktrace();
}
}
//将加密后的字符串与签名进行对比
返回检查文本!=null?检查文本。等于(签名。toupper case()):false;
}
/**
* 将字节数组转化为16进制字符串
*
* @param byteArrays
* 字符数组
* @返回字符串
*/
私有静态字符串byteToStr(byte[] byteArrays) {
string str=
for(int I=0;i byteArrays.lengthi ) {
str=byteToHexStr(byteArrays[I]);
}
返回字符串;
}
/**
* 将字节转化为十六进制字符串
*
* @param myByte
* 字节
* @返回字符串
*/
私有静态字符串bytetohextr(byte my byte){
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]=数字[(my字节4)0X0F];
tampArr[1]=Digit[我的字节0X0F];
字符串str=新字符串(坦帕尔);
返回字符串;
}
}提交时公众平台会请求你的地址,并校验你是否在后台做了验证,验证部分:
if(字符串实用程序。isnotblank(请求。getparameter( signature ){
字符串签名=请求。getparameter(“签名”);
字符串时间戳=请求。getparameter(“时间戳”);
字符串nonce=请求。getparameter(“nonce”);
字符串echostr=请求。getparameter( echostr );
LOGGER.info(signature[{}],timestamp[{}],nonce[{}],echostr[{}],signature,timestamp,nonce,echostr);
if (SignUtil.checkSignature(签名、时间戳、随机数)){
LOGGER.info(数据源为微信后台,将echostr[{}]返回!,echostr);
response.getOutputStream().println(echostr);
}
}推荐教程: 《JAVA视频教程》 以上就是爪哇岛微信公众号开发代币验证失败怎么办?的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。