对微信公众号中的unionid和openid的浅解~

UnionID机制,官方的解释是:

通过获取用户基本信息接口,开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个公众号,可使用以下办法通过UnionID机制来在多公众号之间进行用户帐号互通。只要是同一个微信开放平台帐号下的公众号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。

此前的OpenID机制,每个微信号对应每个公众号只有唯一的OpenID,所以不同微信公众号之间是不能共享用户的,现在有了UnionID就可以了。

开发者可通过OpenID来获取用户基本信息。特别需要注意的是,如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的unionid是唯一的。换句话说,同一用户,对同一个微信开放平台下的不同应用,unionid是相同的。
 

OpenID机制

在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)

OpenId是根据appId生成的,在一个app中openId是唯一的,也就是说同一用户在不同的APP中openId是不一样的

同一个应用(App、公众号、小程序)的同一个用户有唯一的openid

openid 是针对应用唯一的,unionid 是针对企业唯一的

 

可以经常看到网络上有这样的问题:

https://api.weixin.qq.com/cgi-bin/user/info?access_token=&openid=
我利用这个接口有时候可以获取到用户信息,有时候又获取不到,请问这是哪里的问题?
或者说有没有其他方法可以获取到用户的unionid?  

原因在于

没有关注公众号  这个接口是获取不了用户的信息的;Unionid这个信息,是要把公众号绑定在微信开放平台上之后才有的。没有绑定,即使用户关注了公众号也没用。

请注意,如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。

unionid 是微信开放平台的——
对于绑定了同一个开放平台的两个服务号 A 和服务号 B,用户 1 关注 A 和 B 会有不同的 openid,但他们的 unionid 的相同的。
也就是说可以用它来确定多个公众号的用户是否是同一个人。当然可以通过公开信息判断,但并不严谨,因为资料都是可以修改的,雷同也是完全可能的。
当然,其实不用 unionid 也是可以实现这个需求的。方法是,每次用户第一次访问公众号页面,让他自动跳转一个固定的公众号(静默授权,记录 openid ),再跳回来。这样的话不需要通过 unionid 也能知道用户在多个公众号是否为同一人。唯一的缺点就是用户的第一次访问页面需要跳转多次。

这里有一篇详细的参考,介绍如何在TP5本地环境下获取微信用户openId与用户信息:https://blog.csdn.net/Especial_/article/details/82382041

 

你可能感兴趣的:(php开发)