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

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

5个回答

你url地址中的文件token验证和你填写的token一样么?验证失败一般都是这个原因。ssxs

官方接入指南,希望对你有用

楼主,你好。
我也遇到了和你一样的问题。感觉按照别人给的java代码去写,token也跟公众号配置的一致。
但就是好像收不到微信发过来的验证请求,因为断点都没有走进去。
我是用内网映射工具www.ngrok.cc来把外网的ip映射到内网的80端口的。
http://前置域名.ngrok.cc/对应项目名,通过ie地址栏是可以直接访问的。
后来你这个问题解决了吗?是啥原因呢?

楼主,您好。
我的问题解决了,跟你共享一下。
我的问题原因在于,我写url地址的时候,地址写错了。
错误:http://前置域名.ngrok.cc/项目名
正确:http://前置域名.ngrok.cc/项目名/wxconnect.do
在IE里面直接访问的时候,wxconnect.do可以省略,因为我设置了自动提交。
但是微信认证的时候,实际的请求地址就变成了我写的url地址后面加对应的参数,所以不能省略。
我看楼主的问题里,好像没有出现我的低级错误。莫非你的controller方法写得不对吗?
试着把断点打到wechat.do的入口函数第一行看看。
顺带附上我的几个代码文件供你参考。
WinxinController.java

 package ssm.weixin;

import java.io.PrintWriter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/")
public class WinxinController {
    @RequestMapping("/wxconnect")  
    public @ResponseBody String weixinConnect(HttpServletRequest req, HttpServletResponse response) throws Exception {    
        Signature sg = new Signature(
                req.getParameter("signature"),
                req.getParameter("timestamp"),
                req.getParameter("nonce"),
                req.getParameter("echostr"));
        String method = req.getMethod();
        // 如果是微信发过来的GET请求
        if("GET".equals(method)){
            if(CheckUtil.checkSignature(sg)){
                System.out.println("微信连接成功!");
                return sg.getEchostr();
            }
        }

        return "";  
    }  
}

CheckUtil.java

 package ssm.weixin;

import java.security.MessageDigest;
import java.util.Arrays;

public class CheckUtil {

    private static final String token = "微信公众号里面配置的token";

    public static boolean checkSignature(Signature sg) {

        String[] arr = new String[] { token, sg.getTimestamp(), sg.getNonce() };
        // 排序
        Arrays.sort(arr);
        // 生成字符串
        StringBuffer content = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr[i]);
        }

        // sha1加密
        String temp = getSha1(content.toString());
        // 比较
        return temp.equals(sg.getSignature());
    }

    // 加密算法
    public static String getSha1(String str) {
        if (str == null || str.length() == 0) {
            return null;
        }

        char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(str.getBytes("UTF-8"));
            byte[] md = mdTemp.digest();
            int j = md.length;
            char buf[] = new char[j * 2];
            int k = 0;

            for (int i = 0; i < j; i++) {
                byte byte0 = md[i];
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }

            return new String(buf);
        } catch (Exception e) {
            return null;
        }

    }
}

Signature.java

 package ssm.weixin;

public class Signature {
    private String signature;
    private String timestamp;
    private String nonce;
    private String echostr;

    public Signature() {
        super();
        // TODO Auto-generated constructor stub
    }

    public Signature(String signature, String timestamp, String nonce, String echostr) {
        super();
        this.signature = signature;
        this.timestamp = timestamp;
        this.nonce = nonce;
        this.echostr = echostr;
    }

    public String getSignature() {
        return signature;
    }

    public void setSignature(String signature) {
        this.signature = signature;
    }

    public String getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getNonce() {
        return nonce;
    }

    public void setNonce(String nonce) {
        this.nonce = nonce;
    }

    public String getEchostr() {
        return echostr;
    }

    public void setEchostr(String echostr) {
        this.echostr = echostr;
    }

    @Override
    public String toString() {
        return "Signature [signature=" + signature + ", timestamp=" + timestamp + ", nonce=" + nonce + ", echostr="
                + echostr + "]";
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
微信公众号开发之token验证
开贴记录下这一两天关于被微信公众号-新浪云折磨的日子 首先我是按照方倍工作室的微信开发公众号的步子来进行开发的,没想到这里面居然埋了一个大坑, 折磨得我不要不要的 这个坑就是:token验证老是不通过。试了许多网上的方法,有关于utf-8无bom格式的,有关于网络不好多试几次的 还有诸如加一个ob_clean();在echo $echoStr;之前之类的一些方法,但是并没有解决问题 苦思
微信公众号开发 配置服务器URL,验证Token
讲一个微信公众号配置好转发URL,在自己的后台引入第三方接口服务,实现自动回复功能。 主要讲配置,验证token,以及可能遇到的错误和需要注意的细节。 1.你肯定要有个微信公众号;if(no)return; 2.在平台上,找到 ‘开发’ –’基本配置’, 服务器地址: 你的服务器地址,推送消息会转发到这个地址上; 只支持http:80端口/ https:443端口 令牌:
微信公众号开发-url验证
include_once "WXBizMsgCrypt.php"; // 假设企业号在公众平台上设置的参数如下 $encodingAesKey = "9EK2YlKe6lIuMVwCbUFZKlkG5afKOv6mhaQ3KXXsPkp"; $token = "qCml1Ab7"; $corpId = "wx033846aba50e4940"; /* ---------
微信公众号开发token验证失败
开发用的Wechat-Group / weixin-java-tools ,本地代码测试token验证成功,但是把项目打成war包放到服务器运行成功后,token验证不通过,下面是打印输出rnrnrn: rn接收到来自微信服务器的认证消息:[b46216ed7fc0862147a2e48b3147e36cefe28645, 1527817216, 2275236936, 10295638346247744902]rn2018-06-01 09:40:16.408 ERROR 5816 --- [p-nio-80-exec-1] m.c.weixin.mp.api.impl.WxMpServiceImpl : Checking signature failed, and the reason is :非法请求参数,有部分参数为空 : [null, 1527817216, 2275236936]
php 微信公众号开发: token 验证
&amp;lt;?php /** * wechat php test */ //define your token define(&quot;TOKEN&quot;, &quot;weixin&quot;); $wechatObj = new wechatCallbackapiTest(); //$wechatObj-&amp;gt;valid();exit; $wechatObj-&amp;gt;responseMsg(); class wechat...
微信公众号开发——服务器配置及token验证
[前言]:因为自己第一次配置开发者模式是2015年底,当时是SAE的应用,现在申请了一个阿里云的服务器,根据官方文档尝试一晚上无果,自己又找资料成功完成启用微信公众号后台开发者模式的服务器设置。一、前提1、购买一台云服务器        必须要有公网IP,可以没有域名,我选择安装的是CentOS 7.5的系统。(这里我是用的最后一个月的学生优惠9.9买了台阿里云玩玩);2、配置安全组添加一条可以访...
微信token/url验证代码
微信token/url验证代码,可设置自己微信的token,完成url验证即可成为微信开发者
关于imooc教程的微信公众号开发的URL超时与token验证失败
昨天开始跟着imooc(强势打一波广告?)中的微信公众号开发教程,刚开始遇到了许多问题,一开始是URL超时,后来解决了,跟着教程敲代码,又来一个token验证失败,搞七搞八,找了各种回答,都没能解决问题,终于,在刚刚,历时一天,解决了这个问题: 首先第一个:URL超时 这个就得说一下我一开始使用的云主机了,为了贪免费(学生党没钱QAQ),使用科学上网去国外找了一个云主机(http://cpan
c# 微信公众号开发(一)服务器配置,验证token
新建一个一般处理程序,WechartInterface.ashx 程序代码 public void ProcessRequest(HttpContext context) { context.Response.ContentType = &quot;text/plain&quot;; string token = &quot;与网页填写的...
C# ASP.NET 微信公众号开发 之 如何验证 TOKEN
   const string Token = &quot;你的token&quot;;            protected void Page_Load(object sender, EventArgs e)        {                        if (Request.HttpMethod.ToLower() == &quot;post&quot;)            {            }...
微信公众号开发验证服务器Token失败
//////////////2016/08/08/////////////////// ///////////////by xbw///////////////////////// /////////////////////////////////////////////////// 微信公众号开发验证服务器Token失败 最后终于找到解决方法了,楼主结贴了但是
公众号开发之-node响应微信token验证
公众号开发之-node响应微信token验证 采用express框架搭建node服务。cyrpto进行sha1加密,natapp做外网穿透
微信公众号开发之配置token
class demo{ public function index(){ //验证消息来自微信服务器 //1.将token , timestamp, nonce三个参数进行字典排序 $token = 'weixin';  //token和配置的一样 $timestamp = $_GET['timestamp']; $nonce = $_GET['nonce']; $arr = arr
微信Token验证的问题
[code=csharp]rnrn const string Token = "TokenWeiXin";rn protected void Page_Load(object sender, EventArgs e)rn rn Valid();rn rnrn private void Valid()rn rn string echoStr = Request.QueryString["echoStr"].ToString();rn if (CheckSignature())rn rn if (!string.IsNullOrEmpty(echoStr))rn rn Response.Write(echoStr);rn Response.End();rn rn rn rnrn private bool CheckSignature()rn rn string signature = Request.QueryString["signature"].ToString();rn string timestamp = Request.QueryString["timestamp"].ToString();rn string nonce = Request.QueryString["nonce"].ToString();rn string[] ArrTmp = Token, timestamp, nonce ;rn Array.Sort(ArrTmp);rn string tmpStr = string.Join("", ArrTmp);rn tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");rn tmpStr = tmpStr.ToLower();rn if (tmpStr == signature)rn rn return true;rn rn elsern rn return false;rn rn rn[/code]rnrn代码如上页面是WebChart.aspx;rn提交的URL是 http://XXXX.XXX.com/WebChart.aspxrnToken是 TokenWeiXinrn但是提交之后一直提示"你的服务器没有正确响应Token验证,请阅读消息接口使用指南";真不知道哪里出问题了,求大家的帮助
Java验证微信公众号token、url
  @WebServlet(asyncSupported = true, urlPatterns = { &quot;/portal&quot; }) public class ServerPortal extends HttpServlet { private static final long serialVersionUID = 1L; private static final String token...
java微信公众号开发学习笔记(二)——安装eclipse 及token验证
java微信公众号开发学习笔记(二)——安装eclipse 及token验证
java版微信公众号开发(二):配置token
扫码登陆微信公众号平台,此时默认的是编辑模式,需要修改为开发者模式。 找到开发---&gt;基本配置, 设置AppId以及APPSecret,并填写IP白名单(在线ip查询:http://www.ip138.com/)。 下面进行服务器配置,这里需要进行token的验证,会根据你填写的url进行token的匹配验证,官网描述的很清楚...
【java】微信服务器配置 Token验证
Token:自主设置,这个token与公众平台wiki中常提的access_token不是一回事。这个token只用于验证开发者服务器。 根据官方开发文档,服务器需要接收参数并进行验证,验证通过后再返回其中一个参数 接收,并验证类 @Controller @RequestMapping({ &amp;quot;weixin/callback&amp;quot; }) public class WechatQRCodeC...
微信公众号开发 Token和凭证Access Token
Token的存在是用来验证发送给我们的消息是否来自微信后台,但是却没有任何措施来保证微信后台接到的消息是来自合法的公众账号服务器(也就是自己的服务器),这时候就有了Access Token(全局唯一票据)
java微信公众号开发 - 微信服务器的接入和验证
个人学习java微信公众号开发过程中的一些经验总结,希望这个博客能记录下我的成长历程,每天进步一点。 也希望跟大家共同学习,欢迎评论,转载请注明出处
微信token验证 请求的URL超时
今天配置微信公众号信息,遇到了一些问题,在此记录一下: 1,URL需要域名,且ICP备案 2,请求的URL超时,mysql的jdbc连接串需要把localhost改为127.0.0.1 我的环境:windows server2008 , mysql , tomcat, jdk8
微信公众号开发之TOKEN初步配置
填写好域名(ps:域名需要通过备案,没有则失败) 注意是直接到你的项目名字地方,还有就是你的端口一定要是80端口或者是443端口,如果你是云上的服务器,可以将80端口映射到你的tomcat端口上面 80端口直接映射到tomcat的8080端口 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port ...
微信公众号开发--获取access token
微信开发中许多接口需要access_token 今天说一下如何获取access_token 其实微信开发者文档中已经写的很详细了,这里只是给出程序的实现方式对于access_token最重要的莫过于使用次数了,因为每天只能由2000次的机会。 公众号调用接口并不是无限制的。为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调
微信公众号开发---模板消息url
发送模板消息的详情url在controller中无法获取第二个参数。 解决方法://拼凑到中间的url先进行一次编码,原因还没弄明白,弄明白了之后再来更新 String detailURL = String.format(weiXinConfig.getOpenUrl(), weiXinConfig.getAppId(),URLEncoder.encode(url, "UTF-8") );
微信公众号开发之开发者模式验证
接入流程详见微信公众平台可用测试号进行开发测试1.填写服务器配置(我使用测试号进行开发的),如下图所示2.验证消息来自微信服务器发送请求,请求地址:http://cmy.ngrok.xiaomiqiu.cn/wechat/chat (自己在微信中配置的URL地址,微信公众号接口必须以http://或https://开头,分别支持80端口和443端口)可进行内网穿透,具体可百度(我使用的小米球,测试...
微信公众号开发-----验证接入
首先要先申请一个测试账号(用于开发测试及功能体验),这种是平常普通用户是涉及不到的,是专门为开发人员准备的一种仅用于测试的公众号。由于用户体验和安全性方面的考虑,微信公众号的注册有一定门槛,某些高级接口的权限需要微信认证后才可以获取。所以,为了帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信推出了公众帐号测试号,无需公众帐号、快速申请接口测试号,通过手机微信扫描二维码即可获得,利...
微信token验证
微信token验证
微信Token验证的——C#
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.IO;using System.Xml;namespace Weixin{    /// &amp;lt;summary&amp;gt;    /// 只适用于微信回调模式的请求    /// &amp;lt;/summary&amp;gt; ...
微信token验证失败
token appid appsecret这三项填写是绝对没有问题的rn接口的php也没有错(大概...我都在zend调试好多次了...)rn但提交配置就是报token验证失败rn求问实质性的解决办法rnhttp://www.cnblogs.com/txw1958/p/token-verify.htmlrn这样的解决不了[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/5.gif][/img]rnrn问题出现很久了 自从一个测试的test.php配置成功后就再也换不了任何东西了 rn哪怕我就把test.php名字改为test1.php 对应的URL一改 都会token验证失败
微信Token验证失败
Token验证失败Token验证失败的一个原因是URL填写成了带参数的了如:http://small.taolue.fm/yancan/index.php?do=vail解决办法就是URL不能带参数,否则会验证失败。一个很好用的token验证工具,点击这里。
微信绑定域名token验证
微信绑定域名token验证,代码加入项目中编译后放到需要绑定的服务器运行
微信的token验证
微信的token验证,如果大家直接复制微信公众号上指引文件里面的代码,我用过,当时才开始学习,现在想想真是心里一万个MMP,新手时期很多都不懂,非常简单的东西都不会,会在这些上面浪费大量的时间。 下面是示例代码,但是我们往往忽略了还需要将随机字符串返回给微信公众号平台,因为这个该死的示例程序并没有写这句话。 private function checkSignature() { _
微信公众号添加服务器url时token验证
if (isset($_GET[&amp;quot;echostr&amp;quot;])) { $echoStr = $_GET[&amp;quot;echostr&amp;quot;]; echo $echoStr; exit; }
微信测试公众号基本配置URL和Token的验证-JAVA
微信测试公众号基本配置URL和Token的验证-JAVA
微信公众号开发(一) 提供自己的url给微信服务器进行验证
        俗话说,万事开头难。对于刚刚接触微信公众号开发的小白来说,进行服务器验证往往难住了一大片开发者。在这里为大家展示一下我的验证方法。希望能帮助到大家!        1、需要拥有自己的服务器。在这里我使用的是ngrok内网映射工具,虽然性能不稳定,但胜在简单、方便。注意:微信服务端需要用户提供的端口必须是80端口。            2、填写token,这个是开发者自己任意填写的...
关于微信公众号开发的Token验证失败该如何解决?
在微信公众号开发时需要在公众平台填写服务器配置,其中有一个填写token项,本人在学习过程中出现了验证失败的结果,经上网查阅发现有许多人都出现过这样的问题,现在就此我总结了一些关于填写token时需要注意的事项并简单的介绍一下:什么是token,它是用来做什么的:       token其实起到了一个密钥的作用,主要是针对微信服务器和微信后台进行验证的一个密钥,用来防止第三方恶意插件的。使用前首先...
微信公众号开发-三级域名-token验证-测试服-生产服
微信接口需要token验证,同时有些功能又需要本地调试,所以用nginx走反向代理,把微信测试的地址映射到自己的开发机上。 nginx: 阿里云三级域名设置: springmvc.action: 注意:一定要在@RequestMapping中加UTF-8的参数,否则微信平台验证失败 produces="text/html;charset=UTF-8" ...
PHP关于微信公众号开发token验证以及跟服务器连接
关于微信公众号开发token验证以及跟服务器连接 微信公众号官网:https://mp.weixin.qq.com 申请完公众号后进入开发栏 在服务器配置中的服务器地址输入你在阿里云或者腾讯云上申请的域名例如http://xxx.applinzi.com/你上传的文件名 然后令牌也就是token为自己设置 然后进入你的云服务器的代码编辑页面,在代码页面中编写 define(“TOKEN”, “...
微信服务器在填写服务器的配置返回token验证失败
我之前老师碰到 “token验证失败”的提示,这叫我狠是纳闷,到底哪里出了问题?不知道!!!路径、地址、文件都没有错误呀。 后来才知道是因为访问的页面里没有输出token  SO~ <?php ob_clean(); echo $_GET['echostr']; exit(); ?> 这几行代码就解决了 token验证失败问题
微信测试号,微信公众号开发中token验证的解决办法,即接口配置信息中的url和token怎么设置的方法
首先我们来看两张图,第一张是微信公众号中设置的图 第二张是测试号中的图片,之所以打马赛克是怕不良之心的人,如果有疑问可以在文章后留言,因为本人在这个问题上捣鼓了好几天,所以比较有心得,而微信公众号的开发文档或者百度的资料都不多,所以很容易走弯路   现在讲讲接口配置信息里面的url和token到底填啥 微信需要一个请求一个URL来响应token验证,也就是你点击确定的时候是向你指定...
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件