微信公众平台如何获取用户的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;

}

时间: 2024-12-29 06:53:11

微信公众平台如何获取用户的OpenID的相关文章

微信公众平台网页获取用户OpenID方法

下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接),达到打开网页的目的,但是view不能获取用户的openid,需要使用微信“网页授权获取用户基本信息”高级接口结合使用,获得用户的登入个人信息.具体方法1.配置网页授权回调域名,如 www.111cn.net2.模拟公众号的第三方网页,http://www.111cn.net/getcodeurl

微信公众平台开发--获取用户基本信息

本文介绍如何获得微信公众平台关注用户的基本信息,包括昵称.头像.性别.国家.省份.城市.语言.本文的方法将囊括订阅号和服务号以及自定义菜单各种场景,无论是否有高级接口权限,都有办法来获得用户基本信息,而无需模拟登录. 在本文中,特别要注意的是有两个不同的Access Token,他们产生的方式不一样,一种是使用AppID和AppSecret获取的access_token,一种是OAuth2.0授权中产生的access_token,方倍工作室分别称为全局Access Token和授权Access

爬虫-微信公众平台消息获取

帮朋友抓取微信公众平台的用户评论信息. 下面只说核心的部分,怎么获取评论信息. 查看HTML代码,没有发现关于评论部分的标签.看来是用JS动态生成的,但是查找ajax请求也没有找到哪里有返回数据. 最后搜索一下,原来是在这里,很直白的写在了JS里: <script type="text/javascript"> wx.cgiData = { total_count : 91, latest_msg_id : '200325222', count : "20&quo

微信公众平台开发(88) 用户分组接口

本文介绍在微信公众平台上如何使用高级接口开发用户分组接口的功能. 一.接口介绍 开发者可以使用接口,对公众平台的分组进行查询.创建.修改操作,也可以使用接口在需要时移动用户到某个分组. 一个公众账号,最多支持创建500个分组. 接口调用请求说明创建分组http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN POST数据格式:json POST数据例子:

PHP之路——微信公众号授权获取用户信息

官方文档链接:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html /** * 获取code */ public function actionGetCode() { $response_type = 'code'; $scope = 'snsapi_userinfo'; $conf = yii::$app->params['oauth_conf']['oauth_wx_in']; $url = 'https:/

微信公众号开发获取用户信息

一.获取用户基本信息接口 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 获取用户基本信息 开发者可通过OpenID来获取用户基本信息.请使用https协议. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin

微信公众平台向特定用户推送消息

最近研究微信公众平台,这里整理了一下向特定用户推送消息的思路 一.首先需要将微信的openid与系统用户绑定. 在用户关注公众平台的时候,回复一个链接,要求用户绑定,可以设计如下消息进行回复,(openid最好进行加密处理,后者还需要用这个字段绑定fakeid). 欢迎关注有问必答平台,<a href='http://myweixin123.duapp.com/[email protected]'>点击此处进行用户绑定</a>! 在bind.html页面将openid与系统的use

接入微信公众平台开发之用户关注(取消)事件触发后台自定义消息体通知给用户的实现过程

1.需求:用户关注公众号后回复给用户一个字符串,字符串不能重复使用即如果a用户关注公众号后商户后台回复给用户字符串str1后,b用户关注就是其他字符串,且a用户取消关注再次关注不回复消息体 2.实现过程: ①首先配置服务器url并开启,再次过程中需要微信后台与商户后台进行通信,所以,微信后台会发送请求,商户平台自定义接口回复相关内容即可完成通信. ②原理图: ③代码实现: a.pcodecontroller:定义的一个接口类,用来处理微信服务器发送的请求 1 package com.java.z

微信公众平台新增获取自动回复和自定义菜单配置接口

微信公众平台自动回复功能可以为运营者减少了重复回复消息的次数,但如果自动回复的数量多的话管理就比较麻烦:自定义菜单相当于你这个公众号的导航,但有些公众号会限制不能添加外部链接.现在好了,公众平台开发者接口更新,新增获取自动回复和自定义菜单配置接口,对所有公众号开放. 新增的接口具体是: 1. 获取自动回复规则接口 该接口可以获取公众号设置的自动回复规则,包括关注后自动回复.消息自动回复和关键词自动回复. 开发者可以通过该接口,获取公众号当前使用的自动回复规则,包括关注后自动回复.消息自动回复(6