本篇文章为大家展示了微信公众平台开发中使用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 HashMap Openid_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 {
HashMap userinfo=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如何实现获取用户的信息,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。