前面的文章有讲到微信的一系列开发文章,包括token获取、菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关联,所以在这里我们就采用openid去获取用户微信信息。并实现两个个简单场景应用:(一)当微信新用户关注我们的微信公众平台的时候我们自动回复一篇图文消息,然后在图文消息中标题为:【尊敬的:XXX,你好!】,而且在图文消息中的图片就是用户的微信头像,如下图:(二)pc界面显示用户的昵称,性别,头像

(一)关注被动回复图文消息的实现。

(一)用户微信消息的获取实现

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

在这里我写了一个方法类GetUseInfo.java,在方法中我们只需要传入openid即可返回(昵称,图像、性别【其他参数可自行获取】),代码实现如下:

1 packagecom.gede.wechat.common;2 importjava.util.HashMap;3 importcom.gede.web.util.GlobalConstants;4 importcom.gede.wechat.response.UserInfo;5 importcom.gede.wechat.util.HttpUtils;6

7 importnet.sf.json.JSONObject;8 /**

9 *@authorgede10 *@versiondate:2019年5月29日 上午11:52:2611 * @description :12 */

13 public classGetUseInfo {14 /**

15 * @Description: 通过openid获取用户微信信息16 *@param @paramopenid17 *@param @return

18 *@param @throwsException19 *@authordapengniao20 * @date 2016年3月18日 下午2:01:3021 */

22 public static HashMapOpenid_userinfo(String openid)23 throwsException {24 HashMap params = new HashMap();25 UserInfo ui=null;26 params.put("access_token",27 GlobalConstants.getInterfaceUrl("access_token")); //定时器中获取到的token

28 params.put("openid", openid); //需要获取的用户的openid

29 params.put("lang", "zh_CN");30 String subscribers =HttpUtils.sendGet(31 GlobalConstants.getInterfaceUrl("OpenidUserinfoUrl"), params);32 System.out.println(subscribers);33 params.clear();34 //这里返回参数只取了昵称、头像、和性别

35 String nickname=JSONObject.fromObject(subscribers).getString("nickname");36 String headimgurl=JSONObject.fromObject(subscribers).getString("headimgurl");37 String sex=JSONObject.fromObject(subscribers).getString("sex");38

39 ui=newUserInfo(nickname,headimgurl,sex);40 params.put("nickname",41 nickname); //昵称

42 params.put("headimgurl",43 headimgurl); //图像

44 params.put("sex", sex); //性别

45

46 returnparams;47 }48 }

(二)关注回复图文消息实现

在第一部分中有说道【在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID】,在我们的场景中获取关注者openid的事件就是用户的关注事件,同时我们也是在关注事件中给关注者被动回复图文消息,其实现过程:

通过关注事件获取到openid,调用获取用户信息接口获取关注者相关接口;

在关注事件被动回复中设置图文消息的title以及图片,回复给关注者;

简单代码实现如下:

1 NewsMessage newmsg = newNewsMessage();2 newmsg.setToUserName(openid);3 newmsg.setFromUserName(mpid);4 newmsg.setCreateTime(newDate().getTime());5 newmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS);6 if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { //关注事件

7 System.out.println("==============这是关注事件!");8 try{9 HashMap userinfo =GetUseInfo.Openid_userinfo(openid);10 Article article = newArticle();11 article.setDescription("欢迎来到歌德的个人博客:菜鸟程序员成长之路!"); //图文消息的描述

12 article.setPicUrl(userinfo.get("headimgurl")); //图文消息图片地址

13 article.setTitle("尊敬的:" + userinfo.get("nickname") + ",你好!"); //图文消息标题

14 article.setUrl("https://www.cnblogs.com/gede"); //图文url链接

15 List list = new ArrayList();16 list.add(article); //这里发送的是单图文,如果需要发送多图文则在这里list中加入多个Article即可!

17 newmsg.setArticleCount(list.size());18 newmsg.setArticles(list);19 returnMessageUtil.newsMessageToXml(newmsg);20 } catch(Exception e) {21 //TODO Auto-generated catch block

22 System.out.println("====代码有问题额☺!");23 }24

25 }

最终我们可以来看看我们的成果,这里为了看到效果很直观我先取消关注然后再次关注的,如下图:

(二)pc界面显示用户

(一)添加需要用到的jsp页面。

①在webi-nfo目录下添加home.jsp。简单的home跳转界面,之所以不直接使用跳转后界面是为了添加代码的友好性。

1

2

3

4

5

6

7

Welcome to Mychat

8 ">UserInfo|9

10

②在webi-nfo目录下添加userinfo.jsp。 通过上面被动回复我们不难发现,获取用户信息最重要的是要得到相关公众号对应的openid,所以这里来一个简单的表单提交。

1

2

3

4

5

输入OppenId

6

7

8

9

请输入用户openid:

10

11

12

13

③在webi-nfo目录下添加user.jsp。这个界面是用来请求成功以后,展示用户信息的界面。

1

2

3

4

5

User

6

7

8

9

java获取微信用户源码_Java微信公众平台开发(十)--微信用户信息的获取相关推荐

  1. Java微信公众平台开发(十)--微信自定义菜单的创建实现

    转自:http://www.cuiyongzhi.com/post/48.html 自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我们进入开发模式之后我们的自定义菜单就需要自 ...

  2. java读取 info.plist源码_Java 解析 IPA 文件,读取 Info.plist 信息-Go语言中文社区

    在做移动MDM功能的时候,就遇到了这样一个问题,当用户上传IPA文件时,我如何知道这个IPA文件的相关信息呢?IPA文件有一个很重要的文件Info.plist 就类似于Android程序的Manife ...

  3. php公众号交友源码_个性定制微信导航源码,PHP公众号导航源码,含手机wap版,微信数据...

    程序采用PHP5+MYSQL做为技术基础进行开发.2 z# c2 u. j" A 带数据,带手机版,PC版风格全网首发,大气. F  h; \( x- E  k7 y        程序含数 ...

  4. 视频教程-微信公众平台开发入门-微信开发

    微信公众平台开发入门 订阅后,请点击此处观看大牛全套视频课程:课程播放页链接 价格可能因活动略有浮动 刘运强 ¥39.00 立即订阅视频课 订阅后:请点击此处观看视频课程 视频教程-微信公众平台开发入 ...

  5. 微信公众平台开发[2] —— 微信端分享功能

    背景 初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客.问答,对于参差不齐的信息,自己也是有苦说不出,抽出一点时间写点文章,既是对自己的学习总结,也希望给予同是菜鸟的小白一点帮助. 今 ...

  6. php 微信公众平台开发之微信群发信息

    这篇文章主要为大家详细介绍了php微信公众平台开发之微信群发信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.目的 完成在微信公众号中群发消息.这里只是完成简单的文字发送.也可以发送语音图片 ...

  7. 获取微信用户信息java开发_Java微信公众平台开发(十二)--微信用户信息的获取

    前面的文章有讲到微信的一系列开发文章,包括token获取.菜单创建等,在这一篇将讲述在微信公众平台开发中如何获取微信用户的信息,在上一篇我们有说道微信用户和微信公众账号之间的联系可以通过Openid关 ...

  8. 微信公众平台开发(121) 微信二维码海报

    关键字:微信公众平台 二维码 海报 作者:方倍工作室 原文: http://www.cnblogs.com/txw1958/p/weixin-poster.html 本文介绍微信公众平台下二维码海报的 ...

  9. 微信公众平台开发(110) 微信连Wi-Fi

    微信连Wi-Fi是为商家的线下场所提供一套完整和便捷的微信连Wi-Fi的方案.商家接入微信连Wi-Fi后,顾客无需输入繁琐的Wi-Fi密码,通过微信扫二维码等方式即可快速上网.微信连Wi-Fi还帮助商 ...

最新文章

  1. win10 uwp 按下等待按钮
  2. python where 多条件
  3. xp主机用VMware9和10安装Ubuntu12.04后无法进入图像界面
  4. 聊聊、Java SPI
  5. 微信小程序-WXML转换类型
  6. WPF TextBox 正则验证 大于等于0 小于等于1 的两位小数
  7. linux 大数字 进制转换,Linux下用bc快速进行数字进制转换
  8. 图文列表+欢迎页面+音乐控制小程序模板
  9. (79)FPGA复位激励(initial)
  10. 6 Linux之bash环境配置
  11. Kafka——性能逆天的存在
  12. asp.net.mvc 中form表单提交控制器的2种方法和控制器接收页面提交数据的4种方法...
  13. django mysql socket_django mysql 读写分离
  14. 网络编程在线英英词典之服务器代码框架搭建(二)
  15. Configured.java
  16. Python数据分析与挖掘——回归模型的假设检验
  17. 30岁上下的你,现在混得怎么样?
  18. 关于godot第三方功能增强版
  19. ECCV22 最新54篇论文分方向整理|包含Transformer、图像处理、人脸等(附下载)...
  20. EasyPusher安卓Android手机直播推送之MediaCodec 硬编码H264格式

热门文章

  1. Hibernate 查询方式(HQL/QBC/QBE)汇总
  2. 面向垂直行业的N4接口解耦技术
  3. 随机截距交叉滞后模型(Random Intercepts Cross-Lagged Panel Model, RI-CLPM)
  4. PBox 基于 Dll 动态库窗体的模块化开发平台 (已开源)
  5. python matplotlib 双y轴图像实现
  6. NLP16-总结之一[dict,tfidf,word2vec,关键词,simhash]
  7. K-means聚类与EM算法
  8. 基于eclipse的android项目实战—博学谷(新功能五)更换头像
  9. MATLAB 按组聚类绘图gscatter
  10. 微塔式服务器esxi虚拟机黑群晖,[教程] 在ESXI上快速搭建本站最快的黑群辉(NAS)...