微信openid和unionid
1.长度是不一样的:openid=28,unionid=29
2.openid同一用户同一应用唯一,unionid同一用户不同应用唯一(这里的不同应用是指在同一微信开发平台下的不同应用)
为了识别用户,每个用户针对每个公众号会产生一个安全的openid。
如果需要在多公众号、移动应用之间做用户共通,则需要前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的openid,但他对所有这些同一开放平台账号下的公众号和应用,只有一个unionid。一个微信开放平台只可以绑定10个公众号。
PC端和客户端的不同
我们在使用微信网页版本的时候,生成微信二维码用户扫描登录,此时获取的openid和微信客户端的openid是不一样的,但是unionId是一样的。这是因为,网页二维码扫描登录是网站应用,客户端是公众号,两者属于不同应用。
获取用户的openid是无需用户同意的,获取用户的基本信息则需要用户同意
(多公众号如何判断是否是同一人)
微信公众平台更新,为开发者提供UnionID机制
经开发者反馈,由于同一公司下多个公众号之间需要用户帐号互通,微信开放平台提供了UnionID机制,来解决此问题。
通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通过UnionID机制来在多公众号之间进行用户帐号互通。
-
将多个公众号绑定到同一个微信开放平台(open.weixin.qq.com)帐号下,即同一个Union下
-
通过获取用户基本信息接口中的UnionID来区分用户的唯一性,不过需要注意的是:公众号只有在被绑定到微信开放平台帐号下后,才会获取UnionID。只要是同一个微信开放平台帐号下的公众号,用户的UnionID是唯一的。换句话说, 同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。
一、注册微信开放平台
过程略。
二、绑定微信公众号
点击顶部 “管理中心”,选择进入“公众号”,再点击“绑定公众号”
点击查看原始尺寸
只有通过微信认证的公众号才能绑定。
三、获取用户基本信息
这是使用高级接口中的获取用户基本信息来实现,方法参考 微信公众平台开发(86) 获取用户基本信息
在第一个公众号下面获得的方倍的用户信息如下:
{
"subscribe": 1,
"openid": "oLVPpjqs9BhvzwPj5A-vTYAX3GLc",
"nickname": "方倍",
"sex": 1,
"language": "zh_CN",
"city": "广东",
"province": "深圳",
"country": "中国",
"headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0",
"subscribe_time": 1375706487,
"unionid": "oTBn-jt2RQSHdBoJQYFSdnZo8BBQ"
}
在第二个公众号下面获得的方倍的用户信息如下:
{
"subscribe": 1,
"openid": "ouBMEj6WFnUFBIUKe83VD7s7dft9",
"nickname": "方倍",
"sex": 1,
"language": "zh_CN",
"city": "广东",
"province": "深圳",
"country": "中国",
"headimgurl": "http://wx.qlogo.cn/mmopen/utpKYf69VAbCRDRlbUsPsdQN38DoibCkrU6SAMCSNx558eTaLVM8PyM6jlEGzOrH67hyZibIZPXu4BK1XNWzSXB3Cs4qpBBg18/0",
"subscribe_time": 1375726425,
"unionid": "oTBn-jt2RQSHdBoJQYFSdnZo8BBQ"
}
注意两个不同的用户信息
在不同的公众账号下openid是不一样的,而他们的unionid却是一样的。其他的信息不具有唯一性,没有比较意义。但基本信息是一致的。
这样就知道了关注两个公众账号的其实是同一个人。
四、UnionID的意义
对于拥有多个账号的企业来说,unionid可以帮助识别不同公众账号下的用户是否是同一个人。这样在不同账号下对该用户提供的服务可以连续起来了。
还可以去除重复关注的用户数,便于统计真实的关注用户总数。