很想写这样的一篇扫盲贴,刚好利用端午小长假的时间,学堂君跟大家来聊聊微信的openid和unionid 。

无论是产品经理、还是H5前端工程师、客户端前端开发人员、后端开发人员,只要进行微信开发就会跟openid和unionid打交道。特别是openid。

有些时候,我们在微信里面玩一些H5小游戏或者是进行相关操作的时候,会出现下面的这个界面。这个界面是微信提供给企业开发授权的页面。

是不是看到这样的界面很熟悉呢?今天学堂君跟大家讲的就是跟它有关的知识点。

 

下面学堂君站在产品经理的角度跟大家详细说说微信的openid和unionid 到底是啥东东。

openid 普通用户的标识,对当前开发者帐号唯一。一个openid对应一个公众号。

unionid 用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。

1、微信的用户隐私策略:

每个接入微信的应用(公众号、APP)就像一个独立的商场,用户使用这些应用就像逛商场,商场用会员卡识别用户,类似的,我们根据商场名字为每个用户生成了一张专属会员卡(openid),每张会员卡只能在对应的商场才能够使用,你不能拿着沃尔玛的会员卡去华润万家积分。这是一种安全的授权方式,如果没有这个会员卡,直接暴露微信号,就相当于拿着身份证去逛商场,丢失一个会员卡号远比丢失身份证号要安全。

那么问题来了,都是万达集团,万达大歌星与万达商场希望做到会员卡通用。微信在这里做了一个打通机制,对于同一个企业,在用户属性里面加了一个企业属性(UnionID),方便同一个企业在不同的产品中识别到同一个用户。

微信独有的 unionid机制, 用户唯一标识符,同个开发账号下的应用 有个unionid是一样的。

这个机制伴随着微信联合登录已经在微信开放平台(open.weixin.qq.com)推出了。获得了开放平台认证的企业,可以绑定10个手机应用、10个网站、10个公众号,他们对应的用户信息也可以互联互通。

 

 

2、微信openid和unionid长度是不一样的。请记住:

openid=28   ,    unionid=29

3、第三方获取微信openid的两种常见的方式

一、静默授权,用户无感知

用户在你开发的公众号发消息,微信服务器将POST消息的XML数据包到开发者填写的URL上,这时你可以通过程序获取到改用户的openid。

以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)

二、用户同意授权

 

通过微信专有网页授权页面获取(如上图的绿色界面),需要用户手动点击确认。

以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。

学堂君就哪一个具体的生活场景的案例跟大家解读一下什么是静默授权和用户同意授权。

比如你去某个写字楼拜访某家企业,进去大楼之前,保安会让你填写来访登记表。这个动作就等同于微信的用户同意授权。 如果你不是从正面进去,或者从侧门、或者是溜进去,没有填写来访登记信息。你直接进去了。就好比就是静默授权。
第一种方式获取属于微信被动发送给开发中填写的url的,需要用户关注公众号。第二种获取属于网页发起请求去获取的,两种获取方式获取的openid的值是一样的,用户无需关注开发的公众号。openid在不同的公众号和不同的应用之间是不同的,但是 UnionID是一致的。

 

总的来说,微信网页授权流程分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

 

详细的实现方法,童鞋们可以微信官网的文档:网页授权获取用户基本信息  解读。

4、网页授权获取用户基本信息也遵循UnionID机制。

即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

有一个地方需要注意的:

即我们在使用微信网页版本的时候,生成微信二维码用户扫描登录,此时获取的openid和前面我们所说通过微信客户端获取的openid就不是一样的,但是UnionID是一样的,这是因为,网页二维码扫描登录是网站应用,第一种获取openid是公众号,两者属于不同应用,所以是不一样的。

有兴趣的小伙伴可以去尝试体验下!

 

5、UnionID机制的优势和好处

对于用户来说,用一个微信号就可以同时跨平台登陆公众号、移动应用和PC网站,无需重新注册,方便快捷。

对于开发者来说:

1、可以降低用户注册成本,提高用户留存率,更好的管理用户资料。

2、如果是PC网站,微信登陆就和我们在PC上登陆网页版的微信一样,直接扫描二维码即可,极大的方便了用户,而且保障安全。

3、当同一用户用同一微信同时登陆PC网站、移动应用、公众号,这三方的数据就可统一储存,用户无论在哪一端进行操作,三大平台都会统一修改结果,这将极大方便了对同一用户的数据管理和行为统计。

 

 

总结:任何程序的开发原理和机制都是来源于生活,学会用互联网的专业技能把我们日常的一些生活场景转换成技术门槛和机制。这也是一种提升自身专业水平能力的具体表现(撩妹技能)。