您现在的位置是:首页 > 微信公众号

李清波 2019-08-15 微信公众号 158

微信登录和公众号授权登录开发逻辑详解

UnionId和OpenId

微信登录最重要的两个返回信息,一个是UnionId,一个是OpenId。两者之间有着必然的联系。

首先,先来理一下微信开放平台的架构。开发微信登录,必须有一个开放平台账号(公众号授权可以不用,后面会讲到)。开放平台下面可以申请多个应用或绑定微信公众号(必须为服务号)。

如下图所示

开放平台多个应用

APP登录:申请移动应用(做了微信支付的都知道怎么回事了哈);

电脑端登录:申请网页应用(必须有域名,还得填表什么的,具体就不说了);

微信公众号授权:主要场景是,在微信打开某个链接,然后用户统一授权给公众号,表示可以获取用户的微信信息。

开放平台和各种申请的应用或者公众号的关系,如下图所示(别问我为什么这都还要用图表示)。

开放平台和各种申请的应用或者公众号的关系

可以把这想象成是订单主表和订单明细的关系(一对多)。

这跟OpenId和UnionId有什么关系呢?

OpenId,一个微信账户对应每一个应用或者微信公众号,有各自的OpenId,用来标记,这个微信账户,和这个应用,或者微信公众号的关系。

看图:

一个微信账户对应每一个应用或者微信公众号

图上所示的应用和微信公众号都在同一个开放平台下。

但是这个关系即使是应用不在同一个微信开放平台下仍然成立。

UnionId,可以把UnionId看成是微信用户和微信开放平台的关系。

看图:

一个微信和不同应用以OpenId联系,与开放平台下以UnionId联系。

总结起来就一句话,一个微信和不同应用以OpenId联系,与开放平台下以UnionId联系。


具体代码PHP实现微信登录


评论