Java获取Token验证详解!

关于java获取微信Token验证的问题相信很多人都遇见过,尤其是对刚接触微信开发的人来说确实有点棘手。但是会发现不管是网上还是微信官方文档上java版本的都是非常少的甚至没有。近几天我就遇到这个令人郁闷问题了,经过自己不懈的努力之后现在终于是解决。好记性不如烂笔头,还是应该写写,将自己的经验分享出来,希望能帮助到更多的人。

首先在公众号官方配置的时候会提示输入token

Java获取Token验证详解!_第1张图片

注意:很多人会将token和access_token理解为一个东西。其实不然,他们两个是有区别的。

这是公众号官方文档上对access_token的解释:

Java获取Token验证详解!_第2张图片

access_token是由微信生成的随机码,目前时间为7200秒,直接调用微信接口即可生成。而token是自己手动写死用于识别用户的,每个用户针对每个公众号会产生一个安全的OpenID。大概就是这样,具体的就不详说了。

明白以上操作之后接下来要在项目当中写代码和微信进行首次交互,然后才能在基本配置中配置成功。

<%
        String token = "test";
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        String[] arr = new String[] { token, timestamp, nonce };
        Arrays.sort(arr);
        String str = StringUtils.join(arr);
        String sec = DigestUtils.shaHex(str);
        if (sec == null || !sec.equals(signature)) {
            response.setStatus(403);
            return;
        }
        try {
            PrintWriter outTest = response.getWriter();
            outTest.println(echostr);
            outTest.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    %>

注意:代码当中的token要和公众号配置时候的token一样,除了token首次可以自定义之外,其他的获取变量名称都不可变。要不然验证通不过,这个是可以自定义的。如果域名对应的服务器是首次进行配置的话可以自定义,但是以后如果想变化url地址,这个是不能变的,否则会提示验证失败。

以上代码写在jsp或者class中都可,确保被执行了就行。并且只需要验证一次就行了。

接下来去公众号配置,点击提交,你会发现不会再报token验证失败了,生活依旧那么美好。

你可能感兴趣的:(java,微信)