重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇文章为大家展示了微信公众平台开发中使用Java如何实现获取用户的信息,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
创新互联建站是一家专业提供麦盖提企业网站建设,专注与成都做网站、成都网站制作、H5网站设计、小程序制作等业务。10年已为麦盖提众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
(一)用户微信消息的获取实现
在关注者与公众号产生消息交互后,公众号可获得关注者的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即可返回(昵称,图像、性别【其他参数可自行获取】),代码实现如下:
package com.cuiyongzhi.wechat.common; import java.util.HashMap; import com.cuiyongzhi.web.util.GlobalConstants; import com.cuiyongzhi.wechat.util.HttpUtils; import net.sf.json.JSONObject; /** * ClassName: GetUseInfo * @Description: 获取微信用户信息 * @author dapengniao * @date 2016年3月18日 下午2:00:52 */ public class GetUseInfo { /** * @Description: 通过openid获取用户微信信息 * @param @param openid * @param @return * @param @throws Exception * @author dapengniao * @date 2016年3月18日 下午2:01:30 */ public static HashMapOpenid_userinfo(String openid) throws Exception { HashMap params = new HashMap (); params.put("access_token", GlobalConstants.getInterfaceUrl("access_token")); //定时器中获取到的token params.put("openid", openid); //需要获取的用户的openid params.put("lang", "zh_CN"); String subscribers = HttpUtils.sendGet( GlobalConstants.getInterfaceUrl("OpenidUserinfoUrl"), params); System.out.println(subscribers); params.clear(); //这里返回参数只取了昵称、头像、和性别 params.put("nickname", JSONObject.fromObject(subscribers).getString("nickname")); //昵称 params.put("headimgurl", JSONObject.fromObject(subscribers).getString("headimgurl")); //图像 params.put("sex", JSONObject.fromObject(subscribers).getString("sex")); //性别 return params; } }
(二)关注回复图文消息实现
在第一部分中有说道【在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID】,在我们的场景中获取关注者openid的事件就是用户的关注事件,同时我们也是在关注事件中给关注者被动回复图文消息(图文消息的回复实现可参照:Java微信公众平台开发(5) 文本及图文消息回复的实现 ),其实现过程:
通过关注事件获取到openid,调用获取用户信息接口获取关注者相关接口;
在关注事件被动回复中设置图文消息的title以及图片,回复给关注者;
简单代码实现如下:
//对图文消息 NewsMessage newmsg=new NewsMessage(); newmsg.setToUserName(openid); newmsg.setFromUserName(mpid); newmsg.setCreateTime(new Date().getTime()); newmsg.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_NEWS); if (map.get("Event").equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) { // 关注事件 System.out.println("==============这是关注事件!"); try { HashMapuserinfo=GetUseInfo.Openid_userinfo(openid); Article article=new Article(); article.setDescription("欢迎来到崔用志的个人博客:菜鸟程序员成长之路!"); //图文消息的描述 article.setPicUrl(userinfo.get("headimgurl")); //图文消息图片地址 article.setTitle("尊敬的:"+userinfo.get("nickname")+",你好!"); //图文消息标题 article.setUrl("http://www.cuiyongzhi.com"); //图文url链接 List list=new ArrayList (); list.add(article); //这里发送的是单图文,如果需要发送多图文则在这里list中加入多个Article即可! newmsg.setArticleCount(list.size()); newmsg.setArticles(list); return MessageUtil.newsMessageToXml(newmsg); } catch (Exception e) { // TODO Auto-generated catch block System.out.println("====代码有问题额☺!"); logger.error(e,e); } }
最终我们可以来看看我们的成果,这里为了看到效果很直观我先取消关注然后再次关注的,如下图:
上述内容就是微信公众平台开发中使用Java如何实现获取用户的信息,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。