Lei Zhang

时光已逝永不回,
往事只能回味。
... ...
春风又吹红了花蕊,
你已经也添了新岁。

▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 96%



3Years-3 粉丝模型

2018-04-06 » 没填完的坑 / 3Years , 微信开发

项目地址:https://github.com/PassionZale/3Years


微信公众平台技术文档

如果你还是刚开始接触微信公众号开发,那么可能你需要研读一下微信公众平台技术文档:

微信公众平台技术文档


这里有些概念、接口等你是必须而且一定要了解清楚的:

1. 获取 access_token

access_token 非常重要,几乎大部分公众号相关接口,都必须附带这个凭据。

你需要知道如何对 access_tolen 进行获取缓存刷新


2. 自定义菜单

公众号菜单,几乎是每个“公众号项目”所刚需的一个功能。

菜单必须了解的是:自定义菜单事件推送


3. 消息管理

你需要明白“微信用户”,“应用程序”,“微信服务器”这三者的数据传输方式:

微信用户,好比客户端,或者你粗略的认为是浏览器也行;

应用程序,好比服务端,是你自己的 Web App 项目所运行的服务器;

微信服务器,顾名思义,就是微信自己的服务器。

在公众号里面,“微信用户”与你的“应用程序”不会直接进行数据传输,它通常是由“微信服务器”作为中转站,将用户产生的数据请求以 GET/POST 等请求转发至“应用程序”。

例如,“微信用户”在公众号中输入了:Hello,此时,“应用程序”并不会收到“Hello”字符串。

“Hello”首先被“微信服务器”接收,然后“微信服务器”会判断该公众号是否开启开发者配置(配置后面会详细说明),若开启,“微信服务器”则会将“Hello”以 GET/POST 请求推送至公众号所配置的消息接收地址中。

“消息接收地址”便是“应用程序”中的一个连接,通常我称它为“应用程序”的微信主入口函数

此时,“应用程序”最终接收到了“Hello”。

这时,你想让公众号回复“Welcome”给“微信用户”。

同样的,“应用程序”将“Welcome”发送至“微信服务器”,再由“微信服务器”发送给“微信用户”,最终“微信用户”便能在公众号聊天框中看到“Welcome”了。


4. 网页授权

当用户访问“应用程序”某个连接,如:个人中心,此时,你想展示他的订单列表、微信昵称、微信头像等等。

那么你如何才能确定当前用户是谁呢?

每一个微信用户都有唯一标识(openid)对应一个公众号;

同一个微信用户对应不同公众号,openid 都是不相同的。

你可以粗略的理解为,网页授权便是让微信用户,拿着自己的微信账户,在你的“应用程序”中登录一次,若想了解更全面,可以阅读官网 wiki:微信网页授权

授权完毕后,应用程序会获取到唯一标识:openid。

如果还不理解 openid 的作用,那么这样想想:应用程序拿到 openid 后,这个用户便登录成功了,openid 便是一个 LOGIN STATUS

这就好比,管理后台,输入用户名密码登录成功后,应用程序会存储或更新用户的登录状态一样。


粉丝模型

在设计公众号粉丝模型之前,我们需要知道一个微信粉丝的数据结构到底是怎样的?

打开:获取用户基本信息,往下拉,便会看到官方 wiki 所给出的粉丝数据结构:

{
    "subscribe": 1,
    "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
    "nickname": "Band",
    "sex": 1,
    "language": "zh_CN",
    "city": "广州",
    "province": "广东",
    "country": "中国",
   "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzic",
    "subscribe_time": 1382694957,
    "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL"
    "remark": "",
    "groupid": 0,
    "tagid_list":[128,2],
    "subscribe_scene": "ADD_SCENE_QR_CODE",
    "qr_scene": 98765,
    "qr_scene_str": ""
}

粉丝模型,通常会基于这段数据结构来进行设计:


最需要注意的便是存储 nickname

由于微信用户昵称会有 emoji 表情,因此用 utf-8 是无法完整存储下来,需要改用 utf8mb4 进行存储。

具体可以阅读我过往的博客:处理微信公众号粉丝中包含Emoji表情的昵称

展开选填信息