微信公众号开发接口列表大全之根据code获取用户基本信息
2017-07-20 14:33
561 查看
微信公众号开发接口列表大全
1、
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
2、通过code换取网页授权access_token
1、
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
2、通过code换取网页授权access_token
public static String url_get_webpage_token = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code"
代码示例如何调用接口获取code
/** * 此方法用于微信网页授权 * 微信网页认证(不弹窗获取用户授权) * @return * @throws Exception */ @RequestMapping("/index.do") public void index(HttpServletRequest request,HttpServletResponse response) throws Exception{ String q = request.getQueryString(); String requestUrl = request.getRequestURL().toString(); String redirectUri = requestUrl.substring(0,requestUrl.lastIndexOf("/")); redirectUri = redirectUri +"/auth.do"; if(StringUtils.isNotBlank(q)){ redirectUri = redirectUri + "?" + q; } response.sendRedirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + URLEncoder.encode(redirectUri,"UTF-8") + "&response_type=code&scope=snsapi_base&state=csunicom#wechat_redirect"); } //活动主页 @RequestMapping("/auth.do") public String auth(String code, HttpServletRequest request,HttpServletResponse response){ 4000 String requestUrl = request.getRequestURL().toString(); try{ WXUser wxuser = null; /* * 非空参数判断 */ if(StringUtils.isBlank(code)){ request.setAttribute("msg","缺少必填参数!"); return "preliminary/error"; } String openid = null; /* * 从数据库中获取网页授权信息 * 解决用户回退页面操作导致的获取用户信息失败的问题 */ //OAuthAccessToken oldat = oauthTokenDao.getAuthAccessToken(code); //if(oldat==null){ OAuthAccessToken oldat = WXAdvanceFunc.getAuthedAccessToken(code); //} if(oldat==null){ request.setAttribute("msg","由于授权AccessToken值超时失效,需要您重新授权,请退出后重新进入此页面(刷新页面无效)"); return "preliminary/error"; }else{ oldat.setCode(code); //保存用户最新的网页授权信息 oauthTokenDao.saveOrUpdateAuthAccessToken(oldat); openid = oldat.getOpenid(); } /* * 根据openid获取用户的基本信息 */ wxuser = WXAdvanceFunc.getWXUserInfo(openid); if(wxuser==null){ request.setAttribute("msg","(2)未获取到您的关注信息,请稍后重试!"); return "preliminary/error"; } /* * 根据openid,从crm数据库中读取会员记录 * 判断用户的关注状态,并更新用户的最新关注状态 */ WXUser u = userDao.getByOpenid(openid); if(wxuser.getSubscribe()==1){//用户已关注 if(u==null){ u = new WXUser(); u.setOpenid(wxuser.getOpenid()); u.setNickname(CommonUtils.getNormalChars(wxuser.getNickname())); u.setHeadimgurl(wxuser.getHeadimgurl()); u.setSubscribe(1); u.setAttendDate(wxuser.getAttendDate()); userDao.saveOrUpdateUser(u); }else{ switch(u.getSubscribe()){ case 0: //未关注 u.setSubscribe(1);//更改为首次关注 break; case 2: //取消关注 u.setSubscribe(3);//更改为重新关注 break; case 1: case 3: break; } u.setNickname(CommonUtils.getNormalChars(wxuser.getNickname())); u.setHeadimgurl(wxuser.getHeadimgurl()); u.setAttendDate(wxuser.getAttendDate()); userDao.saveOrUpdateUser(u); } }else{ //用户未关注,重新授权(弹窗获取用户授权) String redirectUri = requestUrl.substring(0,requestUrl.lastIndexOf("/")); redirectUri = redirectUri+"/authAgain.do"; response.sendRedirect("https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + URLEncoder.encode(redirectUri,"UTF-8") + "&response_type=code&scope=snsapi_userinfo&state=csunicom#wechat_redirect"); return null; } request.setAttribute("openid", wxuser.getOpenid()); /** * 获取最新参赛选手的信息 */ pager = new Pager<EntryInfo>(8,1); pager = hndxkfDao.getByPager(pager, 0); request.setAttribute("nlist",pager.getDataList()); request.setAttribute("size", pager.getTotalRows()); //判断该openid是否已经参赛 boolean isbm=hndxkfDao.isbaoming(openid); request.setAttribute("isbm", isbm); return "preliminary/index"; }catch(Exception e){ e.printStackTrace(); request.setAttribute("msg","程序发生了异常,请反馈管理员处理!"); return "preliminary/error"; } } @RequestMapping(value="/authAgain.do") public String initAdvanceWXShare(String code, HttpServletRequest request,HttpServletResponse response) throws Exception{ if(StringUtils.isBlank(code) ){ request.setAttribute("msg","缺少必填参数。"); return "preliminary/error"; } WXUser wxuser = null; String openid=null; OAuthAccessToken oldat = oauthTokenDao.getAuthAccessToken(code); if(oldat==null){ oldat = WXAdvanceFunc.getAuthedAccessToken(code); } if(oldat==null){ request.setAttribute("msg","由于授权AccessToken值超时失效,需要您重新授权,请退出后重新进入此页面(刷新页面无效)"); return "preliminary/error"; } oldat.setCode(code); oauthTokenDao.saveOrUpdateAuthAccessToken(oldat); openid = oldat.getOpenid(); if(StringUtils.isBlank(openid)){ request.setAttribute("msg","获取用户信息失败,请稍后重试!"); return "preliminary/error"; } wxuser = WXAdvanceFunc.getAuthUserInfo(oldat.getAccess_token(), openid); if(wxuser==null){ request.setAttribute("msg","获取用户信息失败,请稍后重试!"); return "preliminary/error"; } WXUser newUser = userDao.getByOpenid(openid); if(newUser==null){ newUser = new WXUser(); newUser.setOpenid(openid); newUser.setNickname(CommonUtils.getNormalChars(wxuser.getNickname())); newUser.setHeadimgurl(wxuser.getHeadimgurl()); newUser.setSex(wxuser.getSex()); newUser.setSubscribe(-1); userDao.saveUser(newUser); } request.setAttribute("openid", wxuser.getOpenid()); /** * 获取最新参赛选手的信息 */ pager = new Pager<EntryInfo>(8,1); pager = hndxkfDao.getByPager(pager, 0); request.setAttribute("nlist",pager.getDataList()); request.setAttribute("size", pager.getTotalRows()); //判断该openid是否已经参赛 boolean isbm=hndxkfDao.isbaoming(openid); request.setAttribute("isbm", isbm); return "preliminary/index"; }
public static OAuthAccessToken getAuthedAccessToken(String code) /* */ { /* 347 */ log.info("获取网页access token"); /* 348 */ OAuthAccessToken at = null; /* 349 */ String url = url_get_webpage_token.replace("APPID", appId) /* 350 */ .replace("SECRET", appSecret) /* 351 */ .replace("CODE", code); /* 352 */ JSONObject o = JSONSupport.getJSONData(url); /* 353 */ if (o != null) { /* 354 */ log.info("微信高级接口=》获取网页access_token接口=>" + o.toString()); /* 355 */ String result = o.toString(); /* 356 */ if (!(result.contains("errcode"))) /* */ { /* 358 */ String access_token = o.getString("access_token"); /* 359 */ String openid = o.getString("openid"); /* 360 */ Long expires_in = Long.valueOf(o.getLong("expires_in")); /* 361 */ String refresh_token = o.getString("refresh_token"); /* */ /* 363 */ at = new OAuthAccessToken(); /* 364 */ at.setAccess_token(access_token); /* 365 */ at.setExpires_in(expires_in); /* 366 */ at.setRefresh_token(refresh_token); /* 367 */ at.setOpenid(openid); /* 368 */ at.setStatus(Integer.valueOf(0)); /* */ } else { /* 370 */ at = new OAuthAccessToken(); /* 371 */ at.setStatus(Integer.valueOf(1)); /* */ } /* */ } /* 374 */ return at; /* */ }
public static OAuthAccessToken getAuthedAccessToken(String code) /* */ { /* 347 */ log.info("获取网页access token"); /* 348 */ OAuthAccessToken at = null; /* 349 */ String url = url_get_webpage_token.replace("APPID", appId) /* 350 */ .replace("SECRET", appSecret) /* 351 */ .replace("CODE", code); /* 352 */ JSONObject o = JSONSupport.getJSONData(url); /* 353 */ if (o != null) { /* 354 */ log.info("微信高级接口=》获取网页access_token接口=>" + o.toString()); /* 355 */ String result = o.toString(); /* 356 */ if (!(result.contains("errcode"))) /* */ { /* 358 */ String access_token = o.getString("access_token"); /* 359 */ String openid = o.getString("openid"); /* 360 */ Long expires_in = Long.valueOf(o.getLong("expires_in")); /* 361 */ String refresh_token = o.getString("refresh_token"); /* */ /* 363 */ at = new OAuthAccessToken(); /* 364 */ at.setAccess_token(access_token); /* 365 */ at.setExpires_in(expires_in); /* 366 */ at.setRefresh_token(refresh_token); /* 367 */ at.setOpenid(openid); /* 368 */ at.setStatus(Integer.valueOf(0)); /* */ } else { /* 370 */ at = new OAuthAccessToken(); /* 371 */ at.setStatus(Integer.valueOf(1)); /* */ } /* */ } /* 374 */ return at; /* */ }详细请看一下链接https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
相关文章推荐
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
- 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版
- 微信公众号PHP开发怎么获取用户的基本信息(姓名、性别、年龄等)
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众号开发系列-网页授权获取用户基本信息
- 微信公众号开发之网页授权获取用户基本信息
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众平台开发 无高级接口账号获取用户基本信息
- 夺命雷公狗---微信开发52----网页授权(oauth2.0)获取用户基本信息接口(2)
- 微信接口开发之高级篇系列【网页授权获取用户基本信息】
- 微信公众号开发系列-网页授权获取用户基本信息
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一
- 夺命雷公狗---微信开发44----获取用户基本信息接口(1)
- 夺命雷公狗---微信开发45----获取用户基本信息接口(2)
- 微信公众号开发系列-网页授权获取用户基本信息
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众号开发系列-网页授权获取用户基本信息
- C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信公众平台开发 无高级接口账号获取用户基本信息(转)