微信开发5-------------------获取用户OPENID

本教程调用wx-tools.jar

想要在微信公众号里获取用户的基本信息,必须是保证服务是在80端口

1.去公众号后台设置获取授权的域名



不能待http这些,也不能带端口,这意味着必须是80端口的

2.创建菜单,同时,将菜单的url指向静默授权的页面


3.这时候微信就会给用户信息分配一个code,并且携带这个code,转发到那个设置url里

我在那个简单yyy.html里只做了简单的打印获取访问连接.

这时候我们打开公众号,发现按钮变成了mytest2,点开一看,进入了这个页面


可以看到微信转发时候带了一个code.

4.我们拿到这个code之后就只需要用code和appid以及serictkey来换取用户的openid,进而换取其他的信息

下面是基本的controller代码

private static Logger log=Logger.getLogger(WxController.class);
	@Resource
	private MachineService machineService;
	@Resource
	private UserorderService userorderService;
	@Resource
	private AuthenEhcache authenEhcache;
	@Resource
	private UserService userService;
	@Resource
	private IService iService;
	@RequestMapping("/indexPage")
	public String index(HttpServletRequest request,String code) throws WxErrorException, MyException{
		//1.判断user是否在session里.如果不存在,则重新拉取信息,并放到session域里
		User existUser = (User) request.getSession().getAttribute("user");
		if(existUser==null){
			//2.获得用户授权的openid
			WxOAuth2AccessTokenResult result = iService.oauth2ToGetAccessToken(code);
			if(result!=null){
				String openid = result.getOpenid();
				if(!StringUtils.isBlank(openid)){
					//3.去数据库里查询,是否有该项记录,如果没有,就报错,因为根本没有关注,不允许进入此页
					User user=userService.getUserByOpenid(openid);
					if(user==null){
						throw new MyException(-1000, "用户未关注");
					}
					WxUser wxUser = iService.getUserInfoByOpenId(new WxUserGet(openid, "ch"));
					//4.如果个人信息有改动,就去修改
					if(!user.getCity().equals(wxUser.getCity())||
							!user.getHeadpic().equals(wxUser.getHeadimgurl())||
							!user.getNickname().equals(wxUser.getHeadimgurl())||
								user.getSex()!=wxUser.getSex()){
						user.setCity(wxUser.getCity());
						user.setHeadpic(wxUser.getHeadimgurl());
						user.setNickname(wxUser.getNickname());
						user.setSex(wxUser.getSex());
						userService.updateUser(user);
					}
					//5.把user放到session域里面
					request.getSession().setAttribute("user", user);
				}else{
					throw new MyException(-1001, "openid为空");
				}
			}else{
				throw new MyException(-1002, "code值无效");
			}
		}
		return "index";	
	}






ok

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值