微信公众平台接口如何获取微信用户详细信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信公众平台接口如何获取微信用户详细信息相关的知识,希望对你有一定的参考价值。
微信公众平台接口可以根据openid获取用户详细信息,方法如下:
引导用户去授权页面。
用户同意授权后,页面将跳转至 redirect_uri/?code=CODE&state=STATE
code是去到授权页面后,用户同意授权后返回来的。php代码如下:
//通过code换取token
$code = $_GET['code'];
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=appid&secret=SECRET&code=$code&grant_type=authorization_code";
$json = file_get_contents($url);
$arr = json_decode($json,true);
$token = $arr['access_token'];
$openid = $arr['openid'];
//拿到token后就可以获取用户基本信息了
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$token&openid=$openid ";
$json = file_get_contents($url);//获取微信用户基本信息
$arr = json_decode($json,true);
$name = $arr['nickname'];//昵称
$imgURL = $arr['headimgurl'];//头像地址
$sex = $arr['sex'];//性别
$province = $arr['province'];//用户个人资料填写的省份
$city= $arr['city'];//普通用户个人资料填写的城市
$country= $arr['country'];//国家,如中国为CN
参考技术A
1、获取用户基本信息,普通公众号就能获取。
2、而网页授权获取用户基本信息需要通过了微信认证的服务号才能拥有。看下图:
参考技术B 微信对外接口是无法获取的 用户详细信息的 只能在公众平台查看祝你愉快,满意请采纳哦本回答被提问者和网友采纳
微信公众平台如何获取用户的OpenID
如何获取用户的OpenID,对于微信开发模式下的开发来说,那就是一个非常简单的小功能了。简单介绍一下我是怎样去获取OpenID的。
微信服务器与公众账号服务器交互的信息可以分为3类:请求消息、事件和响应消息。
(1)请求消息指用户发送给公众账号的信息包含: 文本消息、图片消息、语音消息、视频消息、小视频消息、 地理位置消息、链接消息
(2)事件指用户对公众账号的做出的某种操作时,会使得微信服务器通过事件推送的形式通知到公众账号服务器,从而开发者可以获取到该信息。包含:关注/取消关注事件、扫描带参数二维码事件、 上报地理位置事件、 自定义菜单事件、 点击菜单拉取消息时的事件推送、 点击菜单跳转链接时的事件推送
消息触发时无论请求消息还是事件,公众账号服务器都会获得一个XML格式的数据包。
例如:关注/取消关注事件
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[subscribe]]></Event> </xml>
参数说明:
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型,event |
Event | 事件类型,subscribe(订阅)、unsubscribe(取消订阅) |
FromUserName指用户的openID,对于当前公众号来说是唯一的。我们就可以通过用户openID,在公众账号服务器上创建我们自己的用户数据或者获取用户在我们自己数据库中的数据,进行处理。
我们当时做就是通过用户关注时,利用openID在自己的数据库中自动创建一个用户。这里我没有提到获取用户的基本信息如用户昵称、头像等。
下面是一些Java代码片段:
Map<String ,String > requestMap = MessageUtil.parseXml(request);
String fromUserName = requestMap.get("FromUserName");
String toUserName = requestMap.get("ToUserName");
String msgType = requestMap.get("MsgType");
if(msgType.equals(Constant.REQ_MESSAGE_TYPE_EVENT)){//判断消息类型是否是事件消息类型
String eventType = requestMap.get("Event");//获取具体的事件类型
if(eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE)){ //判断事件是否是关注事件
/* 利用openID在自己的数据库中自动创建一个用户 */
}
}
以上就是通过用户关注时,利用openID在自己的数据库中自动创建一个用户,给大家提供一个思路吧,共同进步。
附:
/**
* 解析微信发来的请求
* @param request
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
public static Map<String , String> parseXml(HttpServletRequest request) throws Exception{
Map<String,String> map = new HashMap<String , String >();
InputStream inputStream = request.getInputStream();
SAXReader reader = new SAXReader();
Document document = reader.read(inputStream);
Element root = document.getRootElement();
List<Element> elementList = root.elements();
for (Element element : elementList) {
map.put(element.getName(),element.getText());
}
inputStream.close();
inputStream = null;
return map;
}
以上是关于微信公众平台接口如何获取微信用户详细信息的主要内容,如果未能解决你的问题,请参考以下文章