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

jsp里的源码:
<%
String token = Weixin.TOKEN;
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");

//对微信返回的数据做SHA1加密
String sign = "";
try {
    List l = new LinkedList();
    l.add(timestamp);
    l.add(nonce);
    l.add(token);
    Collections.sort(l);
    for(Object o :l ){
        sign += (String)o;
    }
} catch (Exception e) {
    e.printStackTrace();
}
sign = SHAEncript.SHA1(sign);
String signature = request.getParameter("signature");
System.out.println("系统算出的签名:"+sign);
System.out.println("微信返给的签名:"+signature);
if(sign.equals(signature)){
    System.out.println("签名验证正确,可以接入");
    String echostr = request.getParameter("echostr");
    System.out.println("微信发回的echostr:"+echostr);
    out.print(echostr);
    System.out.println("已将原数返回");
    out.close();
}
//out.print("gg");

%>

系统算出的签名和微信返回的签名是一致的,然后就一直token验证失败。求各位大神们看看哪里出了问题。
是不是我echstr原样返回的不对。该怎么返回才正确。

2个回答

我的之前也是出问题,我的修改方法: 在配置的URL中 地址: http://xxxx.com/xxx.php (指定到一个默认页面上)

数据加密比较有问题,造成验证失败!

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于用java开发微信公众平台开发 token验证失败的问题

大家好,最近在学习用java开发微信公众平台,第一次写的代码token验证通过了,用的是阿里云的服务器换系统(server2008->2003)后就怎么也通过不过验证。直接输入域名www.zhenggufang.com/aip/longin网页显示404.域名也已经备过案。服务器上的tomcat也启动正常tomcat/conf/server也修改了。多谢提交还是token验证失败。请各位帮忙看看代码如下: package service; import java.io.IOException; import java.io.PrintWriter; import java.util.Date; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import message.resp.TextMessage; import util.ValidationUtil; public class LoginServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(get 请求); String signature = request.getParameter(signature); String timestamp = request.getParameter(timestamp); String nonce= request.getParameter(nonce); String echostr=request.getParameter(echostr); PrintWriter out=response.getWriter(); System.out.println(signature+ signature); System.out.println(timestamp+ timestamp); System.out.println(nonce+ nonce); System.out.println(echostr+ echostr); 验证请求确认成功原样返回echostr参数内容,则接入生效,成为开发者成功,否则 if(ValidationUtil.chechSignature(signature, timestamp, nonce)) { out.print(echostr); } out.close(); } 接受微信服务器发过来的xml数据包(通过post)形式发过来的 @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String respXml=;响应的xml串 request.setCharacterEncoding(utf-8); response.setCharacterEncoding(utf-8); String signature = request.getParameter(signature); String timestamp = request.getParameter(timestamp); String nonce= request.getParameter(nonce); PrintWriter out=response.getWriter(); if(ValidationUtil.chechSignature(signature, timestamp, nonce)) { 接收并解析来自用户的xml数据包中的内容 MapString,String reqMap=MessageUtil.parseXml(request); String ToUserName=reqMap.get(ToUserName); String FromUserName=reqMap.get(FromUserName); String MsgType=reqMap.get(MsgType); String Content=reqMap.get(Content); System.out.println(用户给公众号发的消息+Content); 开始响应消息给用户 String respContent=;要响应的文本内容 构建一条文本消息 TextMessage textMsg=new TextMessage(); textMsg.setFromUserName(FromUserName); textMsg.setFromUserName(ToUserName); textMsg.setCreateTime(new Date().getTime()); textMsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); if(MsgType.equals(MessageUtil.RESP_MESSAGE_TYPE_TEXT)) { respContent=大家好,来自工作公众平台的测试消息!!; } textMsg.setContent(respContent); respXml=MessageUtil.messageToXml(textMsg); System.out.println(respXml+respXml); 接受打印的字符 out.println(respXml); } out.close(); out=null; } } package util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; /** * 微信请求校验工具类 * @author y * */ public class ValidationUtil { private static String token="wlghr0479"; public static boolean chechSignature(String signature,String timestamp,String nonce) { //1.将token,timestamp,nonce三个参数排序 String[] str= new String[]{token,timestamp,nonce}; Arrays.sort(str); //2.将三个参数字符串接成一个字符串 StringBuilder buff=new StringBuilder(); for (int i=0;i<str.length;i++) { buff.append(str[i]); } //3.进行sha1加密 MessageDigest md=null; String result=""; try { md= MessageDigest.getInstance("SHA-1"); byte[]date =md.digest(buff.toString().getBytes()); //将字节数组转换成字符串 result=bytesToStr(date); System.out.println("加密后的"+result); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result!=null ?(result.equals(signature.toUpperCase())) :false; } //将直接数组转换成十六进制字符串 private static String bytesToStr(byte[] byteArray) { String strDigest=""; for (int i=0;i<byteArray.length;i++) { strDigest += byteToHexStr(byteArray[i]); } return strDigest; } //将一个字节转换成16进制字符串 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[]temp1=new char[2]; temp1[0]=Digit[mByte>>>4 & 0X0F]; temp1[1]=Digit[mByte & 0X0F]; String str=new String(temp1); return str; } } <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <!-- 部署配置 --> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>service.LoginServlet</servlet-class> </servlet> <!-- 配置映射 --> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/api/login</url-pattern> </servlet-mapping> <display-name></display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

微信服务器二次修改的时候总是提示token验证失败

第一次验证是通过的,消息推送也非常好,最近换了服务器和域名,想变更过来,但每次修改总是提示token验证失败,改回原来的服务器和域名也不行了,查找了很多方法都不行,原直接傻傻,码代如下请各位大神赐教,在线等,非常着急 using System; using System.Collections.Generic; using System.Web; using System.IO; using System.Text; using System.Net; namespace fz_police.Web { /// <summary> /// Summary description for wx /// </summary> public class wx : IHttpHandler { public void ProcessRequest(HttpContext param_context) { //InterfaceTest(); string postString = string.Empty; if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST") { using (Stream stream = HttpContext.Current.Request.InputStream) { Byte[] postBytes = new Byte[stream.Length]; stream.Read(postBytes, 0, (Int32)stream.Length); postString = Encoding.UTF8.GetString(postBytes); Handle(postString); } } } /// <summary> /// 处理信息并应答 /// </summary> private void Handle(string postStr) { MessageHelp help = new MessageHelp(); string responseContent = help.ReturnMessage(postStr); HttpContext.Current.Response.ContentEncoding = Encoding.UTF8; HttpContext.Current.Response.Write(responseContent); } //成为开发者url测试,返回echoStr public void InterfaceTest() { string token = "fzgonganweixin"; if (string.IsNullOrEmpty(token)) { return; } string echoString = HttpContext.Current.Request.QueryString["echoStr"]; string signature = HttpContext.Current.Request.QueryString["signature"]; string timestamp = HttpContext.Current.Request.QueryString["timestamp"]; string nonce = HttpContext.Current.Request.QueryString["nonce"]; //HttpContext.Current.Response.Clear(); if (!string.IsNullOrEmpty(echoString)) { HttpContext.Current.Response.ContentType = "text/plain"; HttpContext.Current.Response.Charset = "UTF-8"; HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Write(echoString); HttpContext.Current.Response.End(); } } public bool IsReusable { get { return false; } } } }

微信公众平台开发token验证不过

我有自己的服务器,使用java和jsp开发,但是不知道怎养在服务器去获取微信token验证,需要在服务器做什么。求大神指点

C# token验证失败是什么原因?

微信公众号,token验证之前可以,昨天突然不行,然后搞不定了,有大神指教下什么原因吗?

微信公众平台没有自己的服务器资源要怎么填写URL与Token?

申请了个人微信公众平台,但是不知道怎么接入开发者,要填写URL与Token但是我没有自己的服务器资源不知道要怎么弄,寻求大神帮助。还有这个URL后面开发的时候要用到吗?有什么要求? 谢谢!

java微信公众号开发,验证激活时填写的url和token问题??

java开发公众号接口时,url地址为http://10.20.21.237/WechatDemo/wechat.do。 做的是路由器映射,地址是可以通过互联网访问的。为什么还是验证失败呢???我在程序里打了断点,等待微信服务器返回的信息,完全就没有进断点。是因为地址不可用吗??用ip映射的 url 不可用吗????求大神指点

有谁知道微信公众平台token验证的代码用java编写servlet

有谁知道微信公众平台token验证的代码用java编写servlet实现点击提交时配置失败,并且servlet一点反应都没有,直接浏览器里面访问是可以的,官方的都只给php,我用的是腾讯云服务器,谁遇到过请教一下是什么问题

腾讯云搭载apache+svn服务器,订阅号token验证失败

自己搭载的服务器能用tortoiseSVN上传代码(http访问) 用新浪云测试能验证成功。是我服务器搭建失败了吗

微信公众号开发验证莫名其妙失败

![图片说明](https://img-ask.csdn.net/upload/201706/15/1497519059_878070.png) 之前都能验证成功,这是测试号,点击提交压根不会到Controller里去,就提示验证失败, ,同样的代码,验证另一个订阅号就可以成功。请大神解答,感激不尽!!!!

微信通过公众号token获取用户信息时报token过期

我需要通过公众号的access_token和openid去获取用户信息,由于微信限制请求token,token我是缓存起来定时再去请求的,然后在缓存时间内请求,微信返回{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint:},我很确定token是没有过期,因为后面有请求成功的纪录而且不止一条,openid也确定是对应这个公众号的生成的, 文档里请求的变量也就这两个 ![图片说明](https://img-ask.csdn.net/upload/201901/02/1546400980_617292.png) 能想到的都排除了,不知大家有没有遇到这样的情况或者提供一下排除的思路,谢谢

求教微信token认证问题。。

最近开始接触微信接口,服务器后台的语言是java,参照的是柳峰老师的文章 http://blog.csdn.net/lyq8479/article/details/8944988 现在通过浏览器访问接口没有问题 ![图片说明](https://img-ask.csdn.net/upload/201601/29/1454031709_525713.jpg) 通过后台的log查看加密与验证签名部分也没有问题 这是后台验证部分 ![图片说明](https://img-ask.csdn.net/upload/201601/29/1454031847_446860.jpg) 这是这段代码的log ![图片说明](https://img-ask.csdn.net/upload/201601/29/1454031857_890214.jpg) 看上去很美,可是公众平台每次提交就是报token验证失败。。。快崩溃了。。求救。。

微信公众平台开发的url到底要怎么写

我正在学习java,感觉微信开发很有意思,整了两天,连基本配置都配不好. 尤其是url和token,不是url超时就是token验证失败.求前辈指导

微信公众平台安全模式下的开发

微信公众平台消息加密为安全模式下的验证token和明文模式下有什么区别?明文模式下会获取到URL上的signature/timestamp/nonce/echostr,但是安全模式下会增加两个字段,msg_signature/encypt_type,那么明文模式下的echostr字段会不会获取到,安全模式下又是根据什么区验证token(即基本配置的URL)的?

公众微信接入配置在百度BCC上的接口

公众微信验证接口的要求是正确返回用GET方式发送的echostr,我直接把index.php写成了: <?php echo $_GET['echostr'] ?> 我也试过直接用公众微信提供的php示例代码(有验证token的过程),也不行... 都显示配置失败... 接口是配置在百度云服务器上的80端口,通过公网可以正常访问index.php。 求各位解惑_(:з」∠)_

公众号平台开发,用的是新浪Sae服务器,微擎PHP,但是我不知道为什么老是token检验失败

越详细………………………………………………………………………………

PHP如何让微信小程序和APP共用一套api接口?

原理都是访问接口地址,返回数据。 小程序和APP在请求的时候验证不同: --小程序是验证请求微信授权后给予的Token --APP是与客户端规定好的Token 如果小程序和APP两者的界面一致或者类似,那么应该是需要一样的接口数据 所以 如果想要共用一套API接口,是不是在公共控制器加上判断方法,判断有没有APP的Token或者是小程序的Token? **另**:如果还有PC端,虽然是直接返回数据到页面,其实数据也是可以供APP/小程序使用的,如何优雅的提高代码的复用性呢? 在返回数据的时候判断一个标识从而再决定是返回数据/对象或者是json接口数据吗? 这样做好吗?还是说要复制出来一份或者多份呢? 尊敬每一位编程者,对你们提出的经验和答案,真诚地表示尊重!

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

立方体线框模型透视投影 (计算机图形学实验)

计算机图形学实验 立方体线框模型透视投影 的可执行文件,亲测可运行,若需报告可以联系我,期待和各位交流

2019 AI开发者大会

2019 AI开发者大会

组成原理课程设计(实现机器数的真值还原等功能)

实现机器数的真值还原(定点小数)、定点小数的单符号位补码加减运算、定点小数的补码乘法运算和浮点数的加减运算。

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

软件测试2小时入门

软件测试2小时入门

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

计算机图形学-球的光照模型课程设计

计算机图形学-球的光照模型,有代码完美运行,有课程设计书

Linux常用命令大全(非常全!!!)

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 d...

因为看了这些书,我大二就拿了华为Offer

四年了,四年,你知道大学这四年我怎么过的么?

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

fakeLocation13.5.1.zip

fakeLocation13.5.1 虚拟定位 ios13.5.1的最新驱动下载,iPhone/iPad免越狱虚拟定位工具Location-cleaned驱动已更新

UnityLicence

UnityLicence

Python可以这样学(第一季:Python内功修炼)

Python可以这样学(第一季:Python内功修炼)

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

php+mysql学生成绩管理系统

学生成绩管理系统,分三个模块:学生,教师和管理员。 管理员模块:负责学生、老师信息的增删改;发布课程信息的增删改,以便让学生选课;审核老师提交的学生成绩并且打印成绩存档;按照课号查询每个课号的学生成绩

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

推荐24个国外黄色网站欣赏

在中国清朝,明黄色的衣服只有皇子才有资格穿,慢慢的黄色在中国就成了高贵的颜色。在人们的色彩印象中,黄色也表现为暂停。所以当你的网页设计采用黄色的时候,会让人们在你的网页前停留。 黄色,就像橙色和红色,黄色也是一个暖色。它有大自然、阳光、春天的涵义,而且通常被认为是一个快乐和有希望的色彩。黄色是所有色相中最能发光的颜色,给人轻快,透明,辉煌,充满希望的色彩印象。 黄色是一个高可见的色...

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

C++语言基础视频教程

C++语言基础视频教程

玩转Python-Python3基础入门

玩转Python-Python3基础入门

2019校招硬件乐鑫+比特大陆笔试题

楼主水硕一枚,参加了2019年的秋招。自己总结了下乐鑫的笔试题目(现场笔试)以及网上考试的比特大陆的题目

成年人用得到的6款资源网站!各个都是宝藏,绝对让你大饱眼福!

不管是学习还是工作,我们都需要一些资源帮助我们有效地解决实际问题。 很多人找资源只知道上百度,但是你们知道吗,有的资源是百度也搜索不出来的,那么今天小编就给大家介绍几款好用的资源网站,大家赶紧收入囊中吧! 1.网盘007 https://wangpan007.com/ 一款全能的资源搜索网站!只需要输入关键字,就能获得你想要的视频、音乐、压缩包等各种资源,网上...

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐