微信公众号开发之用户关注
前面讲了基本配置,如果配置成功,那么现在就进入我们的微信公众号开发之旅吧!
这个旅程应该从哪里开始比较好呢?想想….首先说用户关注吧 !毕竟这是入口。
用户关注公众号可以通过三种方式:
1.扫公众号的二维码
2.搜索公众号的名称
3.扫带参数的二维码,但是第一个用户只能通过前面两种方式关注。
一、扫公众号的二维码
用户扫了二维码之后,点击关注,微信服务器会向我们的服务器发送一串数据(对象形式):
reqMap:{
FromUserName:xx,
EventKey:xx,
Event:xx,
CreateTime:xx,
Encrypt:xx,
ToUserName:xx,
MsgType:xx,
}
会有人问,这个对象在哪里获取的?里面的数据又是什么呢?
前面一讲有提到基本配置,那里填写了一个url(controller的方法的路径),这个路径对应得方法就是用于接收微信服务器给我们服务器发送的数据,
微信会给我发请求通过两种方式(get & post),get请求用于验证url的真实性,post请求用于返回数据,
上一节的代码已经写得很清楚在哪里可以获取到这个对象数据,不清楚的朋友可以去看一下。
这里解释一下这个对象里的我知道的数据的含义:
FromUserName:扫码的用户的微信openId(微信对每个用户的唯一识别码)
ToUserName :告诉服务器来自于哪一个微信公众号(基本不会用)
CreateTime:扫码时间(一个时间戳Long型)
MsgType:当前操作的类型(事件、消息),事件是event,消息有很多种:text、image、video等,用户关注是属于event类。
这里需要用到的数据其实只有FromUserName而已,知道是哪个用户在关注就行了,如果需要得到这个用户的基本信息(头像,昵称,性别,地址等),
根据微信公众号提供的开发文档去获取就好,只要能拿到用户的微信openId,那么一切就简单了。
二、搜索公众号的名称
和第一种情况是一样的,没什么需要说明的。
三、扫其他用户的二维码
这个和前面两种的不一样就是微信给我们提供了一个字段,用来判断用户再扫一个带什么参数的二维码,请看下面的对象:
reqMap:{
Ticket:xx
FromUserName:xx,
EventKey:xx,
Event:xx,
CreateTime:xx,
Encrypt:xx,
ToUserName:xx,
MsgType:xx,
}
你会发现和上面的对象唯一的区别即使多了一个Ticket这个字段,这个字段和二维码的参数是一一对应的,知道这个就可以知道这个二维码的参数了,
一般这个可以用于用户的海报。
至于,这个参数与Ticket之间怎样去对应,以及如何去生成一个带参数的二维码,请看下一节。