1. String returnUrl="";
mav.addObject("returnUrl", returnUrl);
mav.addObject("appid","appid");
mav.addObject("scope", "snsapi_userinfo");
mav.addObject("state", "no");
mav.setViewName(""); 跳转的页面:<script type="text/javascript">
var returnUrl="http://***/${returnUrl}";
var appid="${appid}";
var scope="${scope}";
var state="${state}";
location.href="https:\/\/open.weixin.qq.com\/connect/oauth2\/authorize?appid="+appid+"&redirect_uri="+encodeURIComponent(returnUrl)+"&response_type=code&scope="+scope+"&state="+state+"#wechat_redirect";
</script>
2.接收code:String code=request.getParameter("code");WxUser wxUserInfo=weixinMemberService.getWxUserInfo(code);String openid=wxUserInfo.getOpenid();----------------------------------------------------------------------------------------------------------------------------------
weixinMemberService.getWxUserInfo(code)接口实现:WebAccessToken accessToken=WeChatUtil.getWebAccessToken(wxUserService.getWxAppId(), wxUserService.getAppsecret(), code);
WxUser wxUserInfo=WeChatUtil.getWxUserInfo(accessToken.getToken(), accessToken.getOpenid());getWebAccessToken方法实现
//获取 网页授权access_token的接口地址(GET)
public final static String web_access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
/**
*
* @Title: getWebAccessToken
* @Description: 获取网页授权access_token
* @author Administrator
* @date 2015-7-12 上午09:47:47
* @param appid 应用id
* @param secret
* @param code
* @return
*/
public static WebAccessToken getWebAccessToken(String appid,String secret,String code){
WebAccessToken accessToken=null;
String requestUrl=web_access_token_url.replace("APPID", appid).replace("SECRET", secret).replace("CODE", code);
JSONObject jsonObject=httpRequest(requestUrl, "GET", null);
// 如果请求成功
if (null != jsonObject) {
try {
accessToken = new WebAccessToken();
accessToken.setToken(jsonObject.getString("access_token"));
accessToken.setExpiresIn(jsonObject.getInt("expires_in"));
accessToken.setRefreshToken(jsonObject.getString("refresh_token"));
accessToken.setOpenid(jsonObject.getString("openid"));
accessToken.setScope(jsonObject.getString("scope"));
//accessToken.setUnionid(jsonObject.getString("unionid"));
} catch (Exception e) {
accessToken = null;
// 获取token失败
System.out.println("获取TOKEN失败("+jsonObject.getInt("errcode")+"):"+WeChatErrorCode.ERRORCODE.get(jsonObject.getInt("errcode")));
}
}
return accessToken;
}getWxUserInfo方法的实现
//获取微信用户基本信息的接口地址(GET)
public final static String get_user_info_url="https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
/**
*
* @Title: getWxUserInfo
* @Description:获取微信用户基本信息
* @author Administrator
* @date 2015-7-12 上午10:54:12
* @param accessToken
* @param opendid
* @return
*/
@SuppressWarnings("unchecked")
public static WxUser getWxUserInfo(String accessToken,String opendid){
WxUser wxUserInfo=null;
String requestUrl=get_user_info_url.replace("ACCESS_TOKEN", accessToken).replace("OPENID",opendid);
JSONObject jsonObject=httpRequest(requestUrl, "GET", null);
if (null != jsonObject) {
try {
wxUserInfo = new WxUser();
wxUserInfo.setCity(jsonObject.getString("city"));
wxUserInfo.setOpenid(jsonObject.getString("openid"));
wxUserInfo.setNickname(jsonObject.getString("nickname"));
wxUserInfo.setSex(jsonObject.getInt("sex"));
wxUserInfo.setProvince(jsonObject.getString("province"));
wxUserInfo.setCountry(jsonObject.getString("country"));
wxUserInfo.setHeadimgurl(jsonObject.getString("headimgurl"));
wxUserInfo.setPrivilege(jsonObject.getJSONArray("privilege"));
} catch (Exception e) {
accessToken = null;
// 获取token失败
System.out.println("获取用户基本信息失败("+jsonObject.getInt("errcode")+"):"+WeChatErrorCode.ERRORCODE.get(jsonObject.getInt("errcode")));
}
}
return wxUserInfo;
}
本文介绍了一种使用微信网页授权流程的方法,包括设置跳转页面、获取code、利用code获取access_token及用户信息等步骤。
897

被折叠的 条评论
为什么被折叠?



