/*** 【方法用途】*   微信公众平台获取用户账户信息* 【方法说明】*   第一次请求access_token,作为网页授权接口调用凭证,也用作后续的接口请求凭证,该凭证有效期2小时,可以无限使用,* 但仅限于本次用户授权登录绑定的CODE。若凭证过期则需要刷新凭证,本方法只作帐户登录前获取微信用户信息,不需要考虑过期问题。*   第二次请求用于获取用户信息,需要的参数有:第一次请求返回的"access_token"和"openid"。* 【备注】*   在发出获取用户信息请求前,我们需要先为微信用户取得授权码:CODE。*   此处已经在微信公众号菜单中写入授权请求,请求完毕微信接口会跳转到我们的页面,用户进入页面时就已经取得CODE(GET请求)。* @return*/public String requestPermission(){try {System.out.println("########getWeChatPermission#########");String code = httpServletRequest.getParameter("requestCode");String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"+"appid=" + WeChatUtil.APPID +"&secret=" + WeChatUtil.SECRET+"&code=" + code+"&grant_type=authorization_code";String result = HttpRequestUtil.getRequest(url);System.out.println(result);JSONObject permission = JSONObject.fromObject(result);/** 判断返回错误信息的话只有两个内容* 示例:{"errcode":40029,"errmsg":"invalid code"} */if(permission.size()>2){//网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同//String access_token = permission.getString("access_token");//access_token接口调用凭证超时时间,单位(秒)//String expires_in = permission.getString("expires_in");//用户刷新access_token//String refresh_token = permission.getString("refresh_token");

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

这里我们要用上面的这个来获取access_token,而前面我获取到的access_token没什么用,就不用管它了

             String url1 = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"+ "&appid=" + WeChatUtil.APPID+ "&secret=" + WeChatUtil.SECRET;String tokenInfo = HttpRequestUtil.getRequest(url1);JSONObject tokenResult = JSONObject.fromObject(tokenInfo);String access_token = tokenResult.getString("access_token");
             //用户唯一标识String openid = permission.getString("openid");//用户授权的作用域,使用逗号(,)分隔//String scope = permission.getString("scope");String url2 = "https://api.weixin.qq.com/sns/userinfo?"+ "access_token=" + access_token+ "&openid=" + openid+ "&lang=zh_CN";String customerInfo = HttpRequestUtil.getRequest(url2);JSONObject info = JSONObject.fromObject(customerInfo);/** 判断返回错误信息的话只有两个内容* 示例:{"errcode":40029,"errmsg":"invalid code"} */if(info.size()>2){//用户昵称//String nickname = info.getString("nickname");//用户的性别,值为1时是男性,值为2时是女性,值为0时是未知//String sex = info.getString("sex");//用户个人资料填写的省份//String province = info.getString("province");//普通用户个人资料填写的城市//String city = info.getString("city");//国家,如中国为CN//String country = info.getString("country");//用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。//若用户更换头像,原有头像URL将失效。//String headimgurl = info.getString("headimgurl");//用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)//String privilege = info.getString("privilege");map = new HashMap<String, Object>();map.put("flag", "success");/** 只有在开发人员将公众号绑定到微信开放平台帐号后,才会出现该字段。* unionid是客户在本公众号平台上的唯一标识,是用于本平台登录的最重要参数*/map.put("unionid", info.getString("unionid"));//此处需要对微信传回的“昵称”进行转码,否则会显示乱码map.put("nickname", new String(info.getString("nickname").getBytes("ISO8859-1"), "UTF-8"));map.put("sex", info.getString("sex"));map.put("openid", openid);System.out.println("unionid:"+info.getString("unionid"));json = (JSON) JSON.toJSON(map);return "success";}else{map = new HashMap<String, Object>();map.put("flag", "error");map.put("errcode", info.getString("errcode"));json = (JSON) JSON.toJSON(map);return "error";}}else{map = new HashMap<String, Object>();map.put("flag", "error");map.put("errcode", permission.getString("errcode"));json = (JSON) JSON.toJSON(map);return "error";}} catch (Exception e) {e.printStackTrace();}return "error";}
public static String getRequest(String url) {//构造HttpClient实例HttpClient client = new HttpClient();GetMethod method = null ;//接收返回结果String result = null;try {//创建GET方法的实例method = new GetMethod(url);//执行HTTP GET方法请求client.executeMethod(method);//返回处理结果result = method.getResponseBodyAsString();if(result.contains("error")){result=null;}} catch (Exception e) {// 发生网络异常System.out.println("发生网络异常!");e.printStackTrace();return null;} finally {//释放链接if (method != null) {method.releaseConnection();}//关闭HttpClient实例if (client != null) {((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();client = null;}}return result;}

【移动】获取客户微信号信息相关推荐

  1. 获取登录域帐号信息方式之 —-IIS(VB)

    前言 java web 项目如何获取客户端登录帐号信息(用于SSO或其他) 之前总结过一篇在Java 的Web 项目中获取客户端帐号信息的文章.参见以上链接的内容. 除了那些方式之外, 还可以使用II ...

  2. 通过微信授权接口,获取用户微信账户信息

    微信官方最近已经回收了前端通过getUserInfo接口获取微信信息的功能,现在推荐的办法是使用后端解密获取,具体办法如下: 第一步:通过jscode2session获取openid $appid = ...

  3. 销售客户拜访时要获取客户的哪些信息

    销售客户拜访时,需要获取客户的以下信息: 客户的公司名称和职位信息 客户对产品/服务的需求和需求背景 客户的决策过程和决策者 客户的预算和投资规划 客户对竞争对手的看法 客户的合作意向和未来计划 这些 ...

  4. JAVA版微信公众号获取openId,微信用户信息

    一. 前端页面js 1.获取页面传来的数据 function GetQueryString(name) {var reg = new RegExp("(^|&)" + na ...

  5. MySQL蜜罐反制获取攻击者微信号、手机号

    1.蜜罐介绍 蜜罐是对攻击者的欺骗技术,用以监视.检测.分析和溯源攻击行为,其没有业务上的用途,所有流入/流出蜜罐的流量都预示着扫描或者攻击行为,因此可以比较好的聚焦于攻击流量. 蜜罐可以实现对攻击者 ...

  6. 实现微信打开网页时,获取当前微信用户信息(Java)(基于snsapi_userinfo方式)

    /*** 1 第一步:用户同意授权,获取code* 2 第二步:通过code换取网页授权access_token* 3 第三步:刷新access_token(如果需要)* 4 第四步:拉取用户信息(需 ...

  7. 微信小程序中获取用户微信运动信息

    可以通过微信接口:wx.getWeRunData 获取用户过去三十天的微信运动步数. 前提: 使用这个接口有两个前提: 1. 需先调用wx.login接口进行登录  步数信息会在用户主动进入小程序时更 ...

  8. QQ空间获取指定QQ号信息接口

    论坛好几天没人发帖子了,前几天忙考试了,后来终于挂了,淡定,要淡定. 可能有的朋友们早就在空间抓到了这些接口,不会的一定要自己抓包啊,IE9版本以前的可以用httpwatch,IE9自带抓包软件(快捷 ...

  9. JAVA 获取微信用户信息,看完这篇你必须得学会

    很多IT搬砖员,磕磕碰碰,都比较生怕遇到自己未接触过的东西,但是作为开发,迟早有一天,某个领导跟你说,某个需求,需要接入微信公众号,需要获取微信用户信息. 虽然说微信提供了相关的文档,但是免不了还是很 ...

  10. 微信公众号开发:获取openId和用户信息(完整版)

    注:之前总结怎么进行本地公众号开发调试,时间一长忘记开发配置却忘了,所以这里记录一下公众号开发配置,方便快速上手. 目录 开发前服务器配置 网页授权获取用户基本信息 snsapi_base snsap ...

最新文章

  1. Error: Network is unreachable. Reason: couldn‘t connect to server localhost:27017(连接mongodb数据库失败)
  2. CF1322B:Present(异或、two pointers)
  3. Angular性能优化之脏检测
  4. CCF 201703-2 学生排队
  5. java,类的构造方法
  6. ArcGIS学习总结(11)——创建点要素并计算对应经纬度
  7. 服务器开启谷歌BBR加速网络
  8. OMRON欧姆龙触摸屏维修NT620C-ST141-E
  9. 乐橙tp1 html调用,乐橙TP1的妙用
  10. Python: PS 滤镜--碎片特效
  11. 路在脚下,却不知怎么去走?
  12. PDF格式的“在线阅读”和“下载”
  13. IDM +百度网盘不限速
  14. CBoard BI 数据可视化 支持国产开源
  15. Unity的游戏打包
  16. You are 87% Sagittarius
  17. 关于aPaaS平台的那些事儿
  18. 和吴昊一起玩推理(第二季首映式)Round 11 —— 从无有到无穷
  19. 如何在WordPress中删除谷歌字体(2种简单方法)
  20. 【Simulink教程案例20】基于simulink的OFDM通信系统信道估计建模与仿真

热门文章

  1. 如何使用python视频_如何用python播放视频
  2. java生成excel文件,以及导出
  3. 【谷歌总裁施密特称谷歌眼镜上市尚需时日】
  4. gitlab本地Centos 7 服务器搭建
  5. 小白菜之index和indexOf
  6. 申宝公司-低价股补涨谨慎参与
  7. PIEO目前学术界最先进的数据包调度器介绍。看不懂
  8. 关于系统测试应该注意的事项
  9. java zombie2,java PrintCompilation输出:“made not entrant”和“made zombie”的意思是什么?...
  10. carsim和simulink联合仿真 ACC