个人也是一个小白,记录自己开发微信网页授权的过程,其中有什么不足,欢迎各位指点!!!
开发前提:
(1)Springboot的开发环境
(2)导入github的微信SDK
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>4.0.0</version>
</dependency>
注意使用的是4.0.0版本的
下面是SDK的GitHub作者链接:
github -> 微信授权SDK
(3)开发是需要注意的电视:
多看文档多看文档!!!
多看文档多看文档!!!
多看文档多看文档!!!
(4)网页授权的作用:
获取用户基本信息,进而实现业务逻辑。
一. 配置好相关配置:
0.开启你的AppSecret
1.配置服务器信息
AppID 是公众号唯一开发识别码,配合开发者密码可调用公众号的接口能力,大多数微信接口都需要附带该参数。
AppSecret 是校验公众号开发者身份的密码,具有极高的安全性。切记勿把密码直接交给第三方开发者或直接存储在代码中。如需第三方代开发公众号,请使用授权方式接入。其中获取accessToken就需要同时传入AppID和AppSecret获取。
URL 是开发者用来接收微信消息和事件的接口URL,也就是我们服务后端的入口地址,需要注意的是该地址必须以域名形式填写,且必须以http 或 https 开头,分别支持80端口和443端口。如:http://yuanj.natapp1.cc/wechat。
Token 可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性),也就是我们项目和微信服务端进行通信时,必须保证公众平台配置的Token和我们后台代码配置的Token保持一致,这样微信就能验证我们身份。
注:EncodingAESKey 参数由开发者手动填写或随机生成,将用作消息体加解密密钥,我们前期可以采用明文模式进行开发测试,暂时先不用关注。
2.在 开发------基本配置 中,配置好相关的 服务器信息。
如果没有的url地址的:
(1)可以去natapp买一个,再买一个域名 ,一共大概15块钱左右一个月,稳定。
(2)也可以去ngrok免费申请一个url,但是不稳定,看个人需要。
3.填写完后先不要按提交按钮:
因为按了提交按钮微信服务器会向你填写的url地址进行请求验证,等会下面会代码实现验证过程。
代码实现微信服务器验证:
// 这里注意,要在你的url地址行加入 /wechat
@RequestMapping(value = "wechat", method = RequestMethod.GET)
public void validate(HttpServletRequest req, HttpServletResponse resp) {
System.out.println("-----开始校验签名-----");
// 接收微信服务器发送请求时传递过来的参数
//签证
String signature = req.getParameter("signature");
//时间戳
String timestamp = req.getParameter("timestamp");
//随机数
String nonce = req.getParameter("nonce");
//随机字符串
String echostr = req.getParameter("echostr");
// 将token、timestamp、nonce三个参数进行字典序排序并拼接为一个字符串
String TOKEN = "你在微信上写的 token";
String sortStr = sort(TOKEN, timestamp, nonce);
// 字符串进行shal加密
String mySignature = WxMpCheckController.sha1(sortStr);
// 校验微信服务器传递过来的签名 和 加密后的字符串是否一致, 若一致则签名通过
if</