最近忙着做一个登录公众号获取用户信息及用户分享后可以得到积分。
首先用户点击一个链接
window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid=#&redirect_uri=#&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect"
appid是你公众号里的
redirect_ur是调用微信返回数据,咱们系统接收code的方法,这个必须要是外网可以访问的 http://www.....com/OhdWeixin/UserAction!getPersonal.action
response_type=code
cope=snsapi_userinfo
state=STATE#wechat_redirect"
1.获取用户信息de action;可以在这一步就获取用户的信息 放在自己的库里 ,我们需求是要在登录的时候把登录信息一起放在一个库里,
public String getPersonal() throws Exception {
String result="login";
BindUserFace bindUserFace = this.getBeanByBeanClass(BindUserFace.class);
String code = request.getParameter("code"); //用户同意授权后,能获取到code
if(!"authdeny".equals(code) && code!=null){
//获取网页授权accexx_token
WeixinOauth2TokenView weixinOauth2TokenView = AdvancedUtil.getOauth2AccessToken(CommonUtil.appId, CommonUtil.appSecret, code);
if(weixinOauth2TokenView!=null) {
//用户标识
String openId = weixinOauth2TokenView.getOpenId();
//网页授权接口访问凭证
String accessToken = weixinOauth2TokenView.getAccessToken();
session.put("openid",openId);
session.put("accessToken",accessToken);
BindWxUser bindWxUser=bindUserFace.findBindWxUser(openId);//openId
if(bindWxUser!=null){
session.put("bindWxUser",bindWxUser);
getMallURL();
result="personal";//这是跳到个人中心页面
}else{
result="login";//如果没有
}
}
}
return result;
}
2.要获取用户的openid 来获取用户的头像:
/**
* 登录(注册)
*/
public String login() throws Exception {
BindUserFace bindUserFace = this.getBeanByBeanClass(BindUserFace.class);
if(session.get("openid")==null && session.get("accessToken")==null) {
String code = request.getParameter("code");
//用户同意授权
if(!"authdeny".equals(code) && code!=null){
String accessToken= (String) session.get("accessToken");
String openid= (String) session.get("openid");
BindWxUser binUs=bindUserFace.findBindWxUser(openid);//openId
if(binUs==null){
//获取用户信息
String tel=bindWxUser.getMobile();
bindWxUser=AdvancedUtil.getSNSUserInfo(accessToken,openid);
bindWxUser.setMobile(tel);
bindWxUser.setRecommender(recommender);
bindUserFace.addBindWxUser(bindWxUser);//保存用户信息
session.put("bindWxUser",bindWxUser);
getMallURL();
}
}
}
return "personal";
}