手机版

微信小程序配置服务器提示令牌验证失败解决方案

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

最近在学习微信小程序的时候,遇到的第一个问题就是需要配置服务器

关于这个服务器的配置我也走了很多弯路。说白了,腾讯就是想通过你填写的URL和Token来验证你有没有自己的服务器(一个外网可以访问的服务器)。其实我想让你证明你是你自己,呵呵。

不要被这个令牌缠住。让我们直接看JAVA代码

打包。基地。行动;导入Java。io。版画作家;导入Java。保安。messagedigest导入Java。保安。nosuchalgorithm异常;导入Java。乌提尔。数组;导入Java。乌提尔。枚举;导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse导入组织。阿帕奇。log4j。伐木工人;导入组织。弹簧框架。刻板印象。控制器;导入组织。弹簧框架。网络。绑定。注释。请求映射;@请求映射('/微信)@Controllerpublic类微信控制器{私有静态记录器=记录器。getlogger(微信控制器。班级私有静态线标记=' xuejp@请求映射(值='/wx。do’)公共void get(httpersvletrequest请求,HttpServletResponse响应)引发异常{系统。出去。println('========微信控制器===========');logger.info(' -来自微信的请求- ');枚举pNames=请求。getparameternames();while(pnames。hasmorelements()){ String name=(String)pnames。next element();字符串值=request.getParameter(名称);//查看微信的请求都带了哪些参数字符串日志='name=' name '值=' valuelogger.error(日志);}字符串签名=request.getParameter('签名');///微信加密签名字符串时间戳=请求。getparameter('时间戳');///时间戳字符串nonce=请求。getParameter(' nonce ');///随机数字符串echostr=请求。GetParameter(' echostr ');//随机字符串PrintWriter out=响应。getwriter();if(检查签名(签名、时间戳、随机数)){ out。印刷品(echostr);}出去。打印(令牌);出去。close();out=null} /** *校验签名*/public静态布尔检查签名(字符串签名、字符串时间戳、字符串现时值){系统。出去。println(' signature re : ' signature ' timestamp : ' timestamp ' non : ' nonce);字符串[] arr=新字符串[]{ 0标记、时间戳、随机数};//将令牌、时间戳、随机数三个参数进行字典序排序数组。排序(arr);StringBuilder内容=new StringBuilder();for(int I=0;一、长度;I){内容。追加;} MessageDigest md=null字符串tmpStr=空尝试{ MD=messagedigest。getinstance(' SHA-1 ');//将三个参数字符串拼接成一个字符串进行sha1加密字节[]摘要=MD .摘要(内容。tostring().getBytes());tmpStr=byteToStr(摘要);} catch(nosuchalgorithm异常e){ e . print stack trace();}内容=null/将sha1加密后的字符串可与签名对比,标识该请求来源于微信系统。出去。println(TMPstr)。等于(签名。ToupPerCase()));返回tmpStr!=null?tmpstr。等于(签名。touppercase()): false;} /** * 将字节数组转换为十六进制字符串* * @ param byteArray * @ return */private static String byte str(byte[]byteArray){ String strDigest=' ';for(int I=0;I Bytearray . lengthi){ strDigest=BytetohexStr(Bytearray[I]);}返回strDigest} /** *将字节转换为十六进制字符串* * @ param mByte * @ return */private static String bytetohextr(byte mByte){ char[]Digit={ ' 0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' A ',' B ',' C ',' D ',' E ',' F ' };char[] tempArr=新的char[2];tempArr[0]=数字[(MByte 4)0x0F];tempArr[1]=数字[MByte0x0F];字符串s=新字符串(Temparr);返回s;}}将以上代码部署到服务器上就可以了,在微信配置界面点击提交就会显示提交成功了,提交成功后一定要点击右上方的启用按钮

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:微信小程序配置服务器提示令牌验证失败解决方案是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。