java实现微信公众号openid与token获取
微信测试工具
我们是使用微信的测试工具来测试功能,所以先准备好测试平台。
链接如下:
测试账号: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
测试工具:https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E8%B0%83%E8%AF%95&form=%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
测试工具可以在线发送一些命令,测试账号相当于你可以免费拥有一个服务号。
首先扫码登录测试账号,然后获取到appid和secret
image.png
image.png
然后测试的时候填在java代码中,我放在了配置文件中,使用spring装配到静态变量中。
image.png
然后项目启动的时候就会加载到静态变量中,在代码中直接使用静态变量即可。
然后微信需要使用域名才能进行测试,但是我们本地测试并没有域名,部署到服务器上测试又不方便,尤其是java,所以我们需要一个内网穿透。
内网穿透
原理请自己查询,这里只介绍操作。
我们使用natapp的服务,先按这个教程一步步做,就可以开启内网穿透,就可以使用域名访问自己的本地电脑。
https://natapp.cn/article/natapp_newbie
需要注意几点是
- 需要身份认证,没什么危险,可以认证
-
需要设置idea的tomcat为80端口,并且可以把项目名删掉,在根目录访问
image.png
image.png
按照natapp的配置完成之后,并且启动了idea,应该用域名可以访问自己的项目了。(重点是自己的80端口要有服务)有疑问及时联系我。
测试号修改配置
需要在测试号中配置我们刚拿到的域名。例如我们拿到的域名是xyz.cc,那么我们填的内容有那些呢?
-
接口配置信息,你只需要改成你的域名即可,token随便写。
image.png
http://zds4m9.natappfree.cc/auth/verify
-
js安全接口,不用写http://
image.png -
获取用户信息权限,同样只写纯域名
image.png
ok了,点击下图的提交就会验证这个域名的正确性,过程就是微信向这个域名发送了一些参数,可以看我们自己的代码的这个接口的内容,就是接受了那些参数,然后自己做一下验证,如果验证通过,则把echostr原样返回以示通过验证,然后我们不验证,直接返回即可。
image.png
如果提醒验证正确的话就可以使用这个域名来操作了。顺便把自己的域名填写在配置文件中(重启才生效)改域名即可
image.png
关注公众号并创建菜单
扫描自己的二维码,然后关注自己的公众号
image.png
然后去接口工具,先获取token,再用token去创建菜单
https://mp.weixin.qq.com/debug/cgi-bin/apiinfo?t=index&type=%E6%B6%88%E6%81%AF%E6%8E%A5%E5%8F%A3%E8%B0%83%E8%AF%95&form=%E6%96%87%E6%9C%AC%E6%B6%88%E6%81%AF
填自己的appid和secret
image.png
复制这个token,填在这里
image.png
然后下面的内容填上
{
"button":[
{
"type":"click",
"name":"今日歌曲",
"key":"V1001_TODAY_MUSIC"
},
{
"name":"菜单",
"sub_button":[
{
"type":"view",
"name":"首页认证",
"url":"你的域名/auth/getCallBack"
},
{
"type":"click",
"name":"赞一下我们",
"key":"V1001_GOOD"
}]
}]
}
ok,点击首页认证你就可以登录到首页,openid在session里面了