UnionId和OpenId
微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId。两者之间有着必然的联系。
首先,先来理一下微信开放平台的架构。开发微信登录,必须有一个开放平台账号(公众号授权可以不用,后面会讲到)。开放平台下面可以申请多个应用或绑定微信公众号(必须为服务号)。
如下图所示
APP登录:申请移动应用(做了微信支付的都知道怎么回事了哈);
电脑端登录:申请网页应用(必须有域名,还得填表什么的,具体就不说了);
微信公众号授权:主要场景是,在微信打开某个链接,然后用户统一授权给公众号,表示可以获取用户的微信信息。
开放平台和各种申请的应用或者公众号的关系,如下图所示(别问我为什么这都还要用图表示)。
可以把这想象成是订单主表和订单明细的关系(一对多)。
这跟OpenId和UnionId有什么关系呢?
OpenId,一个微信账户对应每一个应用或者微信公众号,有各自的OpenId,用来标记,这个微信账户,和这个应用,或者微信公众号的关系。
看图:
图上所示的应用和微信公众号都在同一个开放平台下。
但是这个关系即使是应用不在同一个微信开放平台下仍然成立。
UnionId,可以把UnionId看成是微信用户和微信开放平台的关系。
看图:
总结起来就一句话,一个微信和不同应用以OpenId联系,与开放平台下以UnionId联系。
具体代码:PHP实现微信登录