微信中OpenID和UnionID的关系
一、官方说明:
如果开发者拥有多个移动应用、网站应用、和公众帐号(包括小程序),可通过UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号(包括小程序),用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。
二、UnionID:用户统一标识,针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的。
三、OpenID: 普通用户的标识,对当前开发者帐号唯一。一个OpenID对应一个公众号。
四、总结:
同一个微信开放平台下的相同主体的App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过wx.login获取到该用户UnionID,无须用户再次授权。
1、微信openid和unionid长度是不一样的:openid=28,unionid=29
2、openid同一用户同一应用唯一,unionid同一用户不同应用唯一。这里的不同应用是指在同一微信开发平台下的不同应用。
3、为了识别用户,每个用户针对每个公众号会产生一个安全的openid。
4、如果需要在多公众号、移动应用之间做用户共通,则需要前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的openid,但他对所有这些同一开放平台账号下的公众号和应用,只有一个unionid。一个微信开放平台只可以绑定10个公众号。
5、对于在pc端和客户端
我们在使用微信网页版本的时候,生成微信二维码用户扫描登录,此时获取的openid和微信客户端的openid是不一样的,但是unionId是一样的。这是因为,网页二维码扫描登录是网站应用,客户端是公众号,两者属于不同应用。
6、获取用户的openid是无需用户同意的,获取用户的基本信息则需要用户同意。
7、问题:如果先有公众号并且积累了大量粉丝,然后才有的小程序,然后想在小程序下也能识别公众号粉丝怎么办呢?
8、解决:
8.1、首先将公众号和小程序关联到同一个开放平台账号;
8.2、通过API将公众号粉丝列表全部拉一遍,同时计算这些粉丝的unionid并保存起来;
8.3、用户进入小程序时计算unionid,然后根据之前保存的公众号粉丝unionid的数据映射过去就好了。
9、早期没有开放平台,后面注册,可以生成唯一的unionid来保证用户是唯一的。后面上线小程序可以保证会员一致。
原文链接:https://blog.csdn.net/qq_32858649/java/article/details/82877023