如何获取用户的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;

}

微信公众平台如何获取用户的OpenID(一)的更多相关文章

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

    下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧.用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值 (即网页链接 ...

  2. 微信公众平台实现获取用户OpenID的方法

    这篇文章主要介绍了微信公众平台实现获取用户OpenID的方法,需要开发人员经过微信授权后获取高级接口才能使用此功能,用户OpenID对于微信公众平台建设有着非常广泛的用途,需要的朋友可以参考下 本文实 ...

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

    官方文档链接:http://mp.weixin.qq.com/wiki/4/9ac2e7b1f1d22e9e57260f6553822520.html /** * 获取code */ public f ...

  4. PHP 微信公众号开发 - 获取用户信息

    项目微信公众号开发,记录获取用户微信号信息,和用户openid 1,登录微信公众平台 点击登录微信公众平台 2,获取公众号开发信息 登陆之后在 开发->基本配置 3,设置IP白名单 在这里添加服 ...

  5. 使用Java语言开发微信公众平台(五)——获取access_token

    在前四期的文章中,我们分别学习了"环境搭建与开发接入"."文本消息的接收与响应"."被关注回复与关键词回复"."图文消息的发送与响 ...

  6. 使用Java语言开发微信公众平台(六)——获取access_token

             在前四期的文章中,我们分别学习了“环境搭建与开发接入”.“文本消息的接收与响应”.“被关注回复与关键词回复”.“图文消息的发送与响应”等环节.那么,从本篇博文开始,我们将进去更高级的 ...

  7. 微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。

    在这里给大家分享下我的心得,1.写代码前一定要对整个流程有个了解.我就是因为在先不了解整个过程中去ctrl+c+v他人的博客代码,花费很多无用的时间去处理还不知道能不能跑的起来的代码. 2.本人比较喜 ...

  8. PHP实现微信公众号授权获取用户信息

    class WxAuthModel extends BaseModel { var $appId = APPID; var $appSecret = APPSECRET; /*微信x小程序,获取微信o ...

  9. 微信公众平台接口获取时间戳为10位,java开发需转为13位

    问题1:为什么会生成13位的时间戳,13位的时间戳和10时间戳分别是怎么来的 ? java的date默认精度是毫秒,也就是说生成的时间戳就是13位的,而像c++或者php生成的时间戳默认就是10位的, ...

随机推荐

  1. 多列布局——column-width

    column-width的使用和CSS中的width属性一样,不过不同的是,column-width属性在定义元素列宽的时候,既可以单独使用,也可以和多列属性中其他属性配合使用.其基本语法如下所示 : ...

  2. [Ahoi2013]差异

    后缀数组+单调栈 代码 #include<cstdio> #include<algorithm> #include<cstring> using namespace ...

  3. jQuery的deferred对象详解(转载)

    本文转载自: jQuery的deferred对象详解(转载)

  4. Spring.Net实现IOC和DI

    一:在Asp.net MVC中应该怎样使用Spring.Net?1:先导入dll文件. 2:将案例中的Config文件夹拷贝到项目中. 3:修改Config文件夹中的相关的配置信息. type里面填写 ...

  5. phpcms V9 添加模块

    为phpcms创建一个模块的开发流程 [1]创建模块目录 通过前面的学习,我们已经知道phpcms V9框架中的模块位于phcms/modules目录中,每一个目录称之为一个模块. 如果要创建一个模块 ...

  6. Unity随机随学

    1.什么是渲染管道? 是指在显示器上为了显示出图像而经过的一系列必要操作.渲染管道中的步骤很多,都要将几何物体从一个坐标系中变换到另一个坐标系中去. 主要步骤有: 本地坐标->视图坐标-> ...

  7. PHP获取毫秒时间戳,利用microtime()函数

    PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数.php的毫秒是没有默认 ...

  8. tomcat,Jboss,weblogic区别与比较

    一.tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心 ...

  9. bootstrap弹出框提示框无法调用

    使用bootstrap的js插件真的很好用啊有木有!! 但是第一次使用这个弹出框跟提示框的时候就被打击了,没有反应啊!! 然而这并不是一个大问题,一句话搞定,看代码: //首先是工具提示: $(fun ...

  10. Just a Hook(HDU1698 线段树的简单应用)

    Just a Hook Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Prob ...