发表于: 2017-12-23 23:08:12
1 640
今天完成的事
验证是否接入微信平台的接口
@RequestMapping(value = "/WxServlet",method = RequestMethod.GET)
public void getConnection(HttpServletRequest request, HttpServletResponse response,ModelMap model,
@RequestParam("signature")String signature,
@RequestParam("timestamp")String timestamp,
@RequestParam("nonce") String nonce,
@RequestParam("echostr") String echostr
)throws Exception{
//排序
String sortString = sort(TOKEN, timestamp, nonce);
//加密
String mySignature = sha1(sortString);
//校验签名,通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
if (mySignature != null && mySignature != "" && mySignature.equals(signature)) {
System.out.println("签名校验通过。");
//如果检验成功输出echostr,微信服务器接收到此输出,才会确认检验完成。
//response.getWriter().println(echostr);
response.getWriter().write(echostr);
model.addAttribute("code",0);
} else {
System.out.println("签名校验失败.");
model.addAttribute("code",-3015);
}
}
获取全局access-token
@RequestMapping(value = "/AccessToken",method = RequestMethod.GET)
public void AccessTokenManger() {
//开启一个新的线程
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
//获取accessToken
AccessTokenInfo.accessToken = GetAccessToken.getAT(appId, appSecret);
//获取成功
if (AccessTokenInfo.accessToken != null) {
//获取到access_token 休眠7000秒,大约2个小时左右
Thread.sleep(7000 * 1000);
//Thread.sleep(10 * 1000);//10秒钟获取一次
} else {
//获取失败
Thread.sleep(1000 * 3); //获取的access_token为空 休眠3秒
}
} catch (Exception e) {
System.out.println("发生异常:" + e.getMessage());
e.printStackTrace();
try {
Thread.sleep(1000 * 10); //发生异常休眠1秒
} catch (Exception e1) {
}
}
}
}
}).start();
}
其中获取access_token的工具类
public static AccessToken getAT(String appId,String appSecret) {
NetWorkHelper netHelper = new NetWorkHelper();
/**
* 接口地址为https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET,其中grant_type固定写为client_credential即可。
*/
String Url = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";, appId, appSecret);
//此请求为https的get请求,返回的数据格式为{"access_token":"ACCESS_TOKEN","expires_in":7200}
String result = netHelper.getHttpsResponse(Url, "");
System.out.println("获取到的access_token="+result);
JSONObject json = JSON.parseObject(result);
AccessToken token = new AccessToken();
token.setAccessToken(json.getString("access_token"));
token.setExpiresin(json.getInteger("expires_in"));
return token;
明天计划的事
获取用户openid的接口
遇到的问题
无
收获
明白access_token有两种
一种是全局access_token
而用户登录需要的是网页授权access_token
评论