一些概念:
关于UnionID机制
1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
2、UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。
openid和Unionid区别
每个接入微信的应用(公众号、APP)就像一个独立的商场,用户使用这些应用就像逛商场,商场用会员卡识别用户,类似的,我们根据商场名字为每个用户生成了一张专属会员卡(openid),每张会员卡只能在对应的商场才能够使用,你不能拿着沃尔玛的会员卡去华润万家积分。这是一种安全的授权方式,如果没有这个会员卡,直接暴露微信号,就相当于拿着身份证去逛商场,丢失一个会员卡号远比丢失身份证号要安全。
那么问题来了,都是万达集团,万达大歌星与万达商场希望做到会员卡通用。微信在这里做了一个打通机制,对于同一个企业,在用户属性里面加了一个企业属性(UnionID),方便同一个企业在不同的产品中识别到同一个用户。
数据库设计及数据存取
tab_user
id openid type //openid 存的微信的 unionid 或 QQ 的 openid 微博的 uid
tab_wx_user
id tab_user_id openid app_id //关联上方的 unionid 及相关用户的 openid
微信 openid 与 unionid 两个都存还是只存 unionid? 答: 都存,openid 有其他用处,发送消息,微信支付啥的要用到
如何微信数据与本地数据同步?
后台定时任务去轮询更新
用户每次授权、互动的时候更新用户数据。
一些有用链接
一些样例:
本来打算写个自己的呢,但是看官方的说明文档后,发现人家写的很清楚,所以直接上链接
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316505&token=&lang=zh_CN
简单的思路,web只需要appid发起扫码链接,获取到code后,将code发送到webservice ,然后通过webservice 发起数据请求,这样就不用担心秘钥被人看到啦。