- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章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即可返回(昵称,图像、性别【其他参数可自行获取】),代码实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
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以及图片,回复给关注者; 简单代码实现如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
//对图文消息
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的开发配置】,感谢你的翻阅,如有疑问可以留言讨论! 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:http://www.cuiyongzhi.com/post/56.html 。
最后此篇关于Java微信公众平台开发(12) 微信用户信息的获取的文章就讲到这里了,如果你想了解更多关于Java微信公众平台开发(12) 微信用户信息的获取的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!