前端设计

什么是openid、unionid和用户基本信息?

2023-09-17

同一个微信用户在不同的应用中存在不同的唯一ID,就是openid,但是当两个应用绑定在同一个微信开发者平台账号下的时候,可以判断出两个openid关联的是同一个unionid,这样,开发者就知道两个应用中的两个用户其实是同一个用户。需要注意,假如两个应用没有绑定在同一个开发者账号下,那意味着无法获取到unionid。

用户基本信息包括:openid、unionid、昵称、头像、所在城市等众多信息,我们不需要明确太多,完全可以查看接口,这里要注意的是用户基本信息是包括unionid的,但是如果没有申请开发者平台账号并进行应用的绑定,那么用户基本信息是无法返回unionid的。

H5如何获取用户的openid和unionid

明确H5:

这里说的H5,是指网页应用,也就是说用户在微信客户端访问网页应用,可以通过授权机制获取到用户的信息,进而实现业务逻辑。

网页授权回调域名的说明:

(翻译一下,就是H5网页在微信公众号的配置,这个不难,也不是重点,就直接复制微信开发者文档里面的内容看看就行了)

(1) 在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
(2) 授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.html 、 http://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.com 、 http://music.qq.com 、 http://qq.com 无法进行OAuth2.0鉴权;
(3) 如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可。
参考文档链接

网页授权的两种形式

官方文档
方式1-静默授权获取openid

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

方式2-非静默授权获取openid

以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
(翻译:就是说,用户可以通过授权框确认授权,获取用户的基本信息,这里的基本信息是包含unionid的,但是前提是应用已经绑定了微信开放平台的开发者账号)

到这里两种方式并没有完,微信官方文档中又增加了一条奇怪的限制:
“用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。”