Java微信公众平台开发(12) 微信用户信息的获取

网友投稿 276 2023-05-20


Java微信公众平台开发(12) 微信用户信息的获取

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

http://

有关获取微信用户信息的文档我们可以参照:http://mp.weixin.qq.com/wiki/1/8a5ce6257f1d3b2afb20f83e72b72ce9.html 。

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

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,调用获取用户信息接口获取关注者相关接口;

在关注事件被动回复中设置图文消息的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://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);

}

}

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

到这里通过openid过去关注者信息的实现就基本结束了,下一篇将讲述【微信web中JSSDK的开发配置】,感谢你的翻阅,如有疑问可以留言讨论!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Collections工具类_动力节点Java学院整理
下一篇:Java微信公众平台开发(11) 微信三大平台的关联
相关文章

 发表评论

暂时没有评论,来抢沙发吧~