JAVA折腾微信公众平台(Token验证)

BAE的JAVA还在内测的时候,抱着好奇的态度发邮件申请了内测权限,当时折腾了一天,然后就没折腾了。现在BAE的JAVA都已经正式开放使用了,我又蛋疼的想写点什么,否则每天仅仅只是工作上的使用,是得不到多大的进步的。

最近微信的公众平台比较火,于是我也想弄个微信来玩玩。如何注册微信公众号?点击之后就可以看到官方的答案了(额,比较坑爹)。

注册之后,可以选择编辑模式和开发模式,这里要说的是开发模式。

首先要开启开发模式必须要进行Token的一个验证,你给出一个地址,微信发送请求,然后你给出相应,就这么简单。虽然说是简单,但是这是事后才说的,官方只有PHP的DEMO,我用JAVA开发的时候各种蛋疼不会弄,不过好在还是弄出来了。

上传代码

以下代码是校验Token的关键代码,其中还有一个SHA1加密的类在附件中,这里就不贴出来了。需要注意的是,这里的类我是继承的HttpServlet,也就是说要进行web.xml的配置,这个就不多说了。

无问题后上传到你的空间,我用的是BAE,大家也可以试试。

package net.binjoo.wechat;

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

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

import net.binjoo.utils.SHA1;

@SuppressWarnings("serial")
public class WechatCallbackApi extends HttpServlet {
    // 自定义 token
    private String TOKEN = "这个地方由你自己定义";

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 微信加密签名
        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加密
        String digest = new SHA1().getDigestOfString(bigStr.getBytes()).toLowerCase();

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

开启消息接口

进入微信公众平台,选择导航菜单栏中的【高级设置 - 开发模式 - 成为开发者】或者点击这里进入,进入后填写网址URL和Token,其中Token可由可以任意填写,用作生成签名,但必须与WechatCallbackApi类中的常量TOKEN一致,否则不能通过校验,成不了开发者。

一切填写无问题之后,点击提交就可以了。是否通过的结果马上就可以得到响应,希望大家都能够看到【提交成功】的提示。

下载地址:CSDN蓝奏云BOX

THE END
折腾java开发者微信
我是一只鲜果频道认领日志
吐槽新浪微博的找回密码

添加评论

已有 62 条评论

飞天舞
飞天舞 2013-03-28 10:28 回复
四川 Windows XP Chrome

沙发

冰剑
冰剑 MOD 2013-04-01 08:48 回复
广东 Windows 7 Chrome

你丫也太水了。

kitten0
kitten0 2013-03-29 11:28 回复
北京 Windows 7 Chrome

都是技术活呀

冰剑
冰剑 MOD 2013-04-01 08:48 回复
广东 Windows 7 Chrome

我是菜鸟。

Jr
Jr 2013-03-29 16:40 回复
四川 Windows 7 Internet Explorer

话说学JAVA的都很变态。。。嘿嘿

冰剑
冰剑 MOD 2013-04-01 08:49 回复
广东 Windows 7 Chrome

额,我是个例外,我不变态。

RazerWang
RazerWang 2013-03-29 17:21 回复
陕西 Windows XP Chrome

知道JAVA程序员和C程序员的差别吗?食堂里,吃完饭就走的是JAVA程序员,吃完饭还要自己 收拾的那就是是C程序员。至于为什么会这样、大家都明白(因为JAVA自带垃圾回收机制、、、C需要手动释放内存)←这就是原因

冰剑
冰剑 MOD 2013-04-01 08:51 回复
广东 Windows 7 Chrome

一个面向对象,一个面向过程。

RazerWang
RazerWang 2013-04-01 11:02 回复
陕西 Windows XP Internet Explorer

完全听不懂,我大学想学java,现在纠结于是桌面编程,还是网页。

冰剑
冰剑 MOD 2013-04-01 11:10 回复
广东 Windows 7 Chrome

java的桌面开发惨不忍睹,oracle都没怎么开发了。
学网页不错,毕竟以后还是移动的时代,WEB还是比较有前景的。

小码哥
小码哥 2013-04-02 10:55 回复
广东 Windows 7 Firefox

健哥,语音识别,洒家已经调通了。

红色石头
红色石头 2013-04-08 08:45 回复
湖北 Windows 7 Chrome

我也做了Java的微信开发:http://50vip.com/blog.php?i=62

另外问下博主,你的页面假装ajax加载时怎么做的啊?

rainzee
rainzee 2013-04-08 10:57 回复
陕西 Windows XP Internet Explorer

css+jquery我会乱说

吴稀罕
吴稀罕 2013-04-10 11:56 回复
广东 Windows XP Internet Explorer

好久没来看了,今天上来看看.好专业的语言啊..

冰剑
冰剑 MOD 2013-04-19 08:56 回复
广东 Windows 7 Chrome

。。。

阿飞
阿飞 2013-04-16 16:36 回复
四川 Linux Chrome

做这个干嘛啊?泡MM啊?微信好像就用来干这个的。

冰剑
冰剑 MOD 2013-04-19 08:56 回复
广东 Windows 7 Chrome

有MM了,不用泡了。
话说微信的功能不只是泡MM啊。

麦子花开
麦子花开 2013-04-16 21:59 回复
山东 Windows 8 Chrome

java大牛。。。

冰剑
冰剑 MOD 2013-04-19 08:56 回复
广东 Windows 7 Chrome

额不是大牛。

rainzee
rainzee 2013-04-21 15:24 回复
陕西 Windows XP Chrome

折腾了快一个星期commenttomail还是没有成功,然后看到你的邮件回复其实是代发,你用的也不是commenttomail吧?是另外一个插件?

冰剑
冰剑 MOD 2013-04-22 16:48 回复
广东 Windows 7 Chrome

话说恭喜你啊,其实我是什么都没有帮到你。

rainzee
rainzee 2013-04-22 10:55 回复
陕西 Windows XP Internet Explorer

独立页面怎么搞的

冰剑
冰剑 MOD 2013-04-22 16:48 回复
广东 Windows 7 Chrome

后台-创建-创建页面,这样就可以弄独立页面的。

自定义独立页面的话可以参考:http://www.dwz.cn/7ADuh

rainzee
rainzee 2013-04-24 20:10 回复
陕西 Windows XP Firefox

nice!要得就是自定义独立页面,你懂我~

浩子
浩子 2013-04-23 19:10 回复
四川 Windows 7 Firefox

。。。。。。
测试哈

第四个李智
第四个李智 2013-04-27 10:50 回复
湖南 Windows 7 Chrome

很严重的说。没看懂。看不懂。。嗷

ccc
ccc 2013-05-19 18:32 回复
广东 Windows 7 Chrome

我插勒,进错门了。。

胸怀伟大邹大妈
云南 Windows XP Chrome

大妈觉得,微信公众平台现在技术里面都是做服务平台的,比如什么xx平台。多数是为站长或者运营者提供定制服务的,这样赚钱的说哦!哈哈

大喇叭
大喇叭 2013-06-11 14:39 回复
浙江 Windows 8 Chrome

帅气...

网虫社区
网虫社区 2013-06-17 20:15 回复
辽宁 Windows XP Chrome

支持大哥

刺菊幽蓝
刺菊幽蓝 2013-06-26 17:05 回复
北京 Windows 7 Internet Explorer

大哥,我弄了很久都没弄出来啊,把你的代码直接贴都不成啊,再详细点呗

刺菊幽蓝
刺菊幽蓝 2013-06-26 17:23 回复
北京 Windows 7 Internet Explorer

是不是说我的token有问题?我就用的我的账号啊,代码里面也改过了。
我发现代码中有个判断,
if (digest.equals(signature)) response.getWriter().print(echostr);
这句有问题啊,加密后的字串没可能和传过来的signature是equals的。

而且,按理论来说,微信只需要返回他发送过来的echostr,我直接返回它也还是不成啊

冰剑
冰剑 MOD 2013-06-26 17:59 回复
广东 Windows 7 Chrome

代码应该木有问题的,我当时写的就是这段代码。
如果你写的Servlet没有问题的话,那我也不是很清楚了。

刺菊幽蓝
刺菊幽蓝 2013-06-27 16:09 回复
北京 Windows 7 Internet Explorer
草一依
草一依 2013-07-05 23:14 回复
辽宁 Windows 7 Internet Explorer

同志,我想向你学习很多很多,其实是我现在着急做微信平台。但是我有很多都不明白。我现在通过第三方平台成为了开始者,可是我不知道下一步该怎么做了。第三方的平台感觉用起来不怎么得劲儿。哎,总之,有很多问题要问你。

冰剑
冰剑 MOD 2013-07-10 18:12 回复
广东 Windows 7 Chrome

多多交流。

草一依
草一依 2013-07-12 16:22 回复
北京 Windows XP Chrome

是吗?我想加你QQ,交流方便,没别的意思哈。我现在在弄一个手机网页,很多都搞不懂,天天百度,每次的关键词都能出来一堆的知识 ,我一个一个看,一个一个试,真的好累啊。我还着急出效果,能不能帮帮我啊。

风絮飞扬
风絮飞扬 2013-08-03 15:42 回复
河南 Windows XP Chrome

你好,朋友。我是一家企业的管理者,希望运营微信公众平台,但是有些疑问,希望能帮忙解答,QQ号码27136825.感谢!

草一依
草一依 2013-07-12 16:24 回复
北京 Windows XP Chrome

964519985 咕叽咕叽 看到留言后麻烦加下。我就不管你要QQ号了,免得暴露了你。哈哈。

张敏鹏
张敏鹏 2014-03-13 22:01 回复
河北 Windows 7 Firefox

我看看而已

Not·双鱼座
Not·双鱼座 2014-04-09 14:28 回复
福建 Windows 7 Firefox

有问题问你、就是这个验证的。看到了回复下

冰剑
冰剑 MOD 2014-04-09 14:29 回复
广东 Windows 7 Chrome

什么问题?

Not·双鱼座
Not·双鱼座 2014-04-09 14:39 回复
福建 Windows 7 Firefox

我从百度网盘中下载之后三个文件我都已经代替了, 还需要改什么吗? web.xml里面也相应的改了,但是现在验证没成功

Not·双鱼座
Not·双鱼座 2014-04-09 14:40 回复
福建 Windows 7 Firefox

加下Q行不?519750346 方便、

穿越异次元
穿越异次元 2014-04-10 23:58 回复
天津 Windows 7 Chrome

没什么问题。就是SHA1其实可以用Java自带的MessageDigest类来搞定。。

冰剑
冰剑 MOD 2014-04-14 10:10 回复
广东 Windows 7 Chrome

当时我还不知道MessageDigest类。。

-人生若只如初见
北京 Windows 8.1 Chrome

大神求指教,我是属于这方面很白痴的了,很看不懂的说,能加下QQ么。418447571.

雷子献
雷子献 2014-07-10 11:38 回复
重庆 Windows 7 Chrome

我的还是不行啊

聪哥
聪哥 2015-01-06 13:06 回复
浙江 Windows 7 Chrome

还是验证失败!

达浪
达浪 2015-02-04 20:37 回复
江苏 Windows 7 Chrome

网址/wechat

邓溢榕
邓溢榕 2015-04-07 22:14 回复
江苏 Windows 7 Chrome

试了下竟然可以了,能请教下为什么后面需要这个wechat吗?

娇
2015-02-05 13:39 回复
广东 Windows XP Chrome

你好 请问我的验证失败是怎么回事呢?可以加你qq吗?743480461

冰剑
冰剑 MOD 2015-02-06 09:12 回复
广东 Windows 7 Chrome

自己再检查一下,代码是没问题的,很多人都试过。

刘怀杰
刘怀杰 2016-02-18 17:23 回复
山东 Windows 10 Chrome

tmpData[j] = byteArrayToInt(newbyte, (pos 64) + (j 4));里面的byteArrayToInt类没有

encrypt();方法也没有

冰剑
冰剑 MOD 2016-02-18 17:33 回复
广东 Windows 7 Chrome

byteArrayToInt不是类,是方法。。
不可能没有,请仔细查看代码。

一夢千尋琥珀川
广西 Windows 7 Internet Explorer

TOKEN验证失败啊,包、名字什么的都已经一致了,博主有空加下我QQ782399171,本人小白真心求解

CopyStick
CopyStick 2016-02-04 11:11 回复
浙江 Windows 7 Chrome

请问发布者 我按照这样去配置,使用阿里云服务器,tomcat启动,代码跟您的一致,token验证失败。

师父被大师兄抓走啦
北京 Windows 7 Chrome

Thanks!

郑青青
郑青青 2016-05-23 13:11 回复
四川 Windows 10 Chrome

为什么执行了这一句还是验证失败啊?response.getWriter().print(echostr);

缥缈峰
缥缈峰 2016-07-01 17:26 回复
北京 Windows 7 Firefox

贴代码要贴全啊。菜鸟都不会搞的。贴全吧。。顶一下

CarilKing
CarilKing 2016-10-10 12:33 回复
广东 Windows 10 Chrome

试试吧

D★J◎H
D★J◎H 2017-02-24 19:46 回复
广东 Windows 7 Chrome

感谢楼主,微信官网都找不到教程,只有简单的提示!

移动设备上继续阅读