这几天简单的做了一下微信登陆的demo,希望对大家有帮助
不多说,直接上代码:
/**
*
* @author TY
*
*/
@Controller
@RequestMapping("/wechatlogin")
public class WechatLoginController {
/**
* 请求CODE
*
* @param response
* @throws Exception
*/
@RequestMapping("/login")
public void login(HttpServletResponse response) throws Exception {
String state = "&state=STATE";
String url = Constant.WECHAT_LOGIN_URL + Constant.APPID + Constant.REDIRECT_URI + Constant.RESPONSE_TYPE
+ Constant.SCOPE + state;
response.sendRedirect(url);
return;
}
/**
* 请求CODE后的回调
*
* @param code
* @param state
* @throws Exception
*/
@RequestMapping("/callback")
public void callback(String code, String state, HttpServletResponse response) throws Exception {
if (code == null) {
/** 重定向回登陆界面 */
String url = Constant.MAINURL;
response.sendRedirect(url);
return;
}
/** 这里需要判断state */
/******************* 通过code获取access_token *******************/
code = "&code=" + code;
String url = Constant.WECHAT_GET_TOKEN_BY_CODE + Constant.APPID + Constant.SECRET + code
+ Constant.GET_ACCESSTOKEN_GRANT_TYPE;
String jsonStr = RequestUrl.getUrlResult(url);
if (jsonStr.contains("\"errcode\":40029")) {
System.out.println("code过期");
/*********************** 这里可以处理 ***********************/
} else {
JSONObject jsonObject = JSONObject.fromObject(jsonStr);
String accessToken = (String) jsonObject.get("access_token");
String refreshToken = (String) jsonObject.get("refresh_token");
String openId = (String) jsonObject.get("openid");
/******************* 通过access_token调用接口 *******************/
/** 检查access_token有效性... */
url = Constant.WECHAT_CHECK_ACCESS_TOKEN + "&access_token=" + accessToken + "&openid=" + openId
+ "&lang=zh_CN";
jsonStr = RequestUrl.getUrlResult(url);
if (jsonStr.contains("\"errcode\":40029")) {
/**
* access_token失效...
*
* 刷新access_token有效期
*/
url = Constant.WECHAT_REFRESH_TOKEN + Constant.APPID + Constant.REFRESH_TOKEN_GRANT_TYPE
+ "&refresh_token=" + refreshToken + "&openid=" + openId + "&lang=zh_CN";
jsonStr = RequestUrl.getUrlResult(url);
// 判断是否超时
/*********************** 这里需要处理 ***********************/
}
/** 获取用户信息 */
url = Constant.WECHAT_GET_USERINFO + "&access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN";
jsonStr = RequestUrl.getUrlResult(url);
/*********************** 这里需要处理 ***********************/
}
return;
}
}