一:验证微信的Token

前言:申请到微信公众号的同学,可能会挺感兴趣的,毕竟微信公众号,确实是一个好东西,它提供了一个很好的平台,而且它自带有一套管理模板,对于微信公众号可以很好的管理。

但是也仅仅是很好的管理,因为作为开发者来说,很多功能需要更加人性的自定化,就需要由自己写程序来提供服务,而微信恰恰就提供了这些接口,可以方便的我们去调用微信的功能。

  于是我们去开启开发者模式

  
  点击“基本配置”,然后需要输入url,输入token,输入EncodingAESKey(这个可以随机生成),最后点击提交。

  问题:?

  奇怪的是微信这方面的文档对于这部分好像是没有任何说明(我不知道是不是我没有找到还是怎么的),我输入我个人的域名,然后输入随便输入了32位的token,然后点击随机生成EncodingAESKey,最后选择加密模式,然后点击提交,最后发现微信提示token验证失败,试过好多次,也从微信官方文档查询token这是个什么东西,最后却只得到token是一个随机的字符串,可以自由输入,结果却可想而知。

  原因!

  百度之后得到,之前输入的url,微信会对这个url发出一个http请求,而这个url,需要正确的对于这个微信的请求作出正确的响应,这样才算验证成功,这下总算弄明白了

  由于我已经有了公网的域名,也有了自己的服务器(没有服务器,没有域名的,只要申请一个空间,就可以了,空间会送一个三级域名),所以就开始写代码,这里是一个servlet,你们只要把这个servlet拷贝过去,就可以验证了,下面列出代码:

  

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.codec.digest.DigestUtils;

@WebServlet("/validateWeiXin.do")
public class ValidateWeiXin extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private String TOKEN = "这里随便填入32位以内的数字英文,也就是token";

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain;charset=utf-8");
        // 微信加密签名
        String signature = request.getParameter("signature");
        // 随机字符串
        String echostr = request.getParameter("echostr");
        // 时间戳
        String timestamp = request.getParameter("timestamp");
        // 随机数
        String nonce = request.getParameter("nonce");

        String[] str = { TOKEN, timestamp, nonce };
        Arrays.sort(str); // 字典序排序
        String bigStr = str[0] + str[1] + str[2];
        // SHA1加密,我这里用的是common-codec的jar包,你们也可以用java自带的消息消息摘要来写,只不过要多写几行代码,但结果都一样的
        DigestUtils.sha1Hex(bigStr);
        String digest = DigestUtils.sha1Hex(bigStr);

        // 确认请求来至微信
        if (digest.equals(signature)) {
            response.getWriter().print(echostr);
        }
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

  有自己服务器的,就可以验证成功了

时间: 2024-10-11 17:30:08

一:验证微信的Token的相关文章

thinkphp微信开发token验证失败

这几天弄微信,token验证总是不过 最终在网上找到解决办法! 原文 这几天弄微信,token验证总是不过. 经过多方查找,终于找到了问题. 是因为写代码时打开了页面输出和调试模式. 经过总结如下: 注意:关闭debug模式.关闭页面trace信息输出,启用sae引擎 做到这三步,配置成功没有问题 config.php文件: 'SHOW_PAGE_TRACE' =>false, // 显示页面Trace信息 index.php文件: define('APP_DEBUG', false); def

unigui验证微信服务器的有效性

UNIGUI验证微信服务器的有效性: //////////////////////////////////////////// //UniGUIServerModuleHTTPCommand //公众平台验证服务器地址的有效性 //////////////////////////////////////////// procedure TUniServerModule.UniGUIServerModuleHTTPCommand( ARequestInfo: TIdHTTPRequestInfo;

一行代码验证微信服务器配置

今天在搞微信小程序验证工作 在配置消息推送里Tokent 一直校验失败 把所有能想到的问题都解决了,但一还是校验失败 经过反复测试和网友的回答终于解决 其实微信向您的服务器发送验证请求时 你只需要将微信发送过来的echostr 再返回给它就可以验证通过了 当然正常情况下按照微信的文档,你应该对微信发送的数据进和你本地的数据进行对比,如果数据一致才告诉它验证通过 我这里只是测试环境为了偷懒才这样做的,正式环境还是应该遵守规则 <?php //只需要将微信发送过来的随机字符串返回给微信即可验证通过

微信硬件平台(九) 自己的服务器从微信获取token并保存txt

1安装crontab: yum install crontabs 说明: service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 查看crontab服务状态:service crond status 手动启动crontab服务:service crond start 查看crontab服务是否已设置为开机启动 chkconfig

【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期

官网说明 access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效. 公众平台的API调用所需的access_token的使用及生成方式说明: 1.为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器.而其他业务逻辑服务器所

使用缓存Memcache存储更新微信access token

关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token.正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效. 公众号可以使用AppID和AppSecret调用本接口来获取access_token.AppID和App

nginx+redis缓存微信的token数据

上一篇文章我们讲了如何在负载均衡的项目中使用redis来缓存session数据,戳这里. 我们在项目的进展过程中,不仅需要缓存session数据,有时候还需要缓存一些别的数据,比如说,微信的access_token. access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的acce

登录验证流程及token处理

一.登录流程 1.先验证验证码,通过以后调用登录接口验证密码,否则返回登录页. 2.验证密码,如果相等返回result,否则返回空的result. 3.在controller中获取result成功验证token,否则返回登录. 4.验证token是否在cookie中,如果在则登录成功,否则生成token放到sso cache中(一般用redis或者memcached中) 然后在放入cookie登录成功. 下面是登录的流程图: 二.过滤器验证 1.首先在cookie中获取token验证token是

微信解封提示需要好友辅助验证,微信被封7天限制登录怎么解除?

现如今,微信已经被老老少少.全民所用.可是,在运用的过程中,也会呈现不少过错的操作导致被封号,而许多封号都需求老友辅佐验证的,接下来我就说下辅佐验证的注意事项. 办法/步骤 首要,在手机中翻开微信,点击右下角的"我"图标,再点击进入"设置"选项.   然后,在设置界面中,翻开"账号与安全"选项,再点击进入最下方的"微信安全中心"选项.   然后,在微信安全中心中点击"解封账号"选项,然后能够选择一个你的老友