全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

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

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

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

在关注者与公众号产生消息交互后,公众号可获得关注者的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<String, String> Openid_userinfo(String openid)
  throws Exception {
 HashMap<String, String> params = new HashMap<String, String>();
 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<String, String> 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<Article> list=new ArrayList<Article>();
  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的开发配置】,感谢你的翻阅,如有疑问可以留言讨论!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Java微信用户信息  # Java获取微信用户信息  # Java获取微信信息  # Java微信公众平台开发(15) 微信JSSDK的使用  # Java微信公众平台开发(14) 微信web开发者工具使用  # Java微信公众平台开发(10) 微信自定义菜单的创建实现  # Java微信公众平台开发(9) 关键字回复以及客服接口实现  # Java微信公众平台开发(8) 多媒体消息回复  # Java微信公众平台开发(7) 公众平台测试帐号的申请  # Java微信公众平台开发(5) 文本及图文消息回复的实现  # Java微信公众平台之素材管理  # Java微信公众平台之获取地理位置  # Java微信公众平台之群发接口(高级群发)  # 在这里  # 在这  # 我们可以  # 如下图  # 的是  # 这是  # 你好  # 下午  # 是在  # 菜鸟  # 多个  # 如有  # 中有  # 可以通过  # 来看看  # 写了  # 我先  # 只需要  # 下一篇  # 多图 


相关文章: 股票网站制作软件,网上股票怎么开户?  高防服务器:AI智能防御DDoS攻击与数据安全保障  重庆网站制作公司哪家好,重庆中考招生办官方网站?  建站主机选购指南:核心配置与性价比推荐解析  如何在阿里云购买域名并搭建网站?  中山网站制作网页,中山新生登记系统登记流程?  建站168自助建站系统:快速模板定制与SEO优化指南  Android自定义控件实现温度旋转按钮效果  如何选择香港主机高效搭建外贸独立站?  php json中文编码为null的解决办法  济南专业网站制作公司,济南信息工程学校怎么样?  如何在建站之星网店版论坛获取技术支持?  黑客如何通过漏洞一步步攻陷网站服务器?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  学校免费自助建站系统:智能生成+拖拽设计+多端适配  建站之星3.0如何解决常见操作问题?  ,制作一个手机app网站要多少钱?  免费网站制作appp,免费制作app哪个平台好?  高防服务器租用首荐平台,企业级优惠套餐快速部署  临沂网站制作企业,临沂第三中学官方网站?  网站制作新手教程,新手建设一个网站需要注意些什么?  常州企业建站如何选择最佳模板?  如何用5美元大硬盘VPS安全高效搭建个人网站?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  在线制作视频网站免费,都有哪些好的动漫网站?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何获取开源自助建站系统免费下载链接?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  如何挑选优质建站一级代理提升网站排名?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  建站为何优先选择香港服务器?  盘锦网站制作公司,盘锦大洼有多少5G网站?  c++ stringstream用法详解_c++字符串与数字转换利器  c# await 一个已经完成的Task会发生什么  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  网站企业制作流程,用什么语言做企业网站比较好?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  临沂网站制作公司有哪些,临沂第四中学官网?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  广德云建站网站建设方案与建站流程优化指南  如何解决ASP生成WAP建站中文乱码问题?  购物网站制作公司有哪些,哪个购物网站比较好?  如何在阿里云完成域名注册与建站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  建站主机选购指南与交易推荐:核心配置解析  定制建站哪家更专业可靠?推荐榜单揭晓 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。