获取微信公众号用户的OpenId(用户关注公众号后,用户在公众号的唯一凭证),有两种方法 1)通过微信接口 1.1)获取网页授权code(分为静默授权,非静默授权(需用户确认)) 1.2) 通过授权code获取用户信息(用户信息包含两种:1)只取OpenId,2)取用户相关头像、昵称。openId等) 具体参考:https://www.jianshu.com/p/b7e2100b56e4 2)通过公众号用户 接下来我详细讲下,如何用公众号用户查找openId 2.1)首先登陆公众号 2.2)找到管理--> 用户信息 2.3)找到已关注用户列表 2.4)用F12打开,打开调试模式,选中某个用户 2.5)找到label下的value值,这就是用户的openId 微信开发过程中,经常会遇到,一个企业有多个小程序和公众号,在不同的小程序和公众号中,会有不同的openid。如果想要确定是同一个人,就需要用到unionid机制。 1 官方关于unionid的说明是这样的 公众号文档的描述
小程序文档的描述
2 微信开放平台 提到unionid就不得不提微信开放平台了 open.weixin.qq.com 微信开放平台,刚开始是为了让开发商,可以支持很多的公众号,而产生的。原因是使用appid和appsecret的方式对于。小程序或公众号的所有者来说太危险,相当于暴露了用户名和秘密。为了安全,出现了开放平台,授权时可以灵活的控制授予哪些权限。开放平台相比appid和appsecret方式还有很多特权。对于开发者是很好的。 注意事项官方的说明比较简单,开发过程中会遇到不少的坑。下面说一下注意事项
进入开放平台,点管理中心。可以看到移动应用、网站应用、公众账号、小程序、第三方平台这些菜单。 如果要绑定公众号就,点击 小程序的流程也差不多。
这与unionid的生成机制有关,unionid是用户与开放平台之间的对应关系,如果绑定多个会造成混乱。 3 unionid的值不同第三方开放平台,开发过程中会遇到,同一个用户,在两个公众号下,获取到的unionid不同的情况。这种情况发送的原因是,两个公众号绑定到了不同的开放平台账号造成的。 不管是小程序还是公众号,一个开放平台的是有绑定限制的。比如小程序 所以一般情况下,会让客户自己注册一个开放平台,然后把客户的公众号和小程序绑定上去。 比如 他们各自绑定各自的开放平台。 开发过程中会出现同一个微信用户,在 造成这样的原因是因为绑定的开放平台不用,每个unionid的产生,其实是用户跟开放平台的唯一对应关系。 还有一点要注意,开发公司A的开放平台 重要的事情说三遍
4 为什么需要openid在微信小程序的开发过程中,往往需要将用户信息录入自己的数据库中,就得有一个唯一标记区分用户,这个标记就是openid。当一个用户使用了某个微信小程序,微信后台会产生一个openid,并且是唯一的,所以可以通过这个来区分用户。 另一方面,我们通过微信小程序API并不能获取到更多用户私密信息,只能获取到昵称,性别,居住地等公开的信息,微信号这种私密信息是获取到的,而通过这些昵称或者居住地,是没办法保证用户表里的用户数据是唯一的。 所以综合而言,如果不需要建立自己的用户数据库,就没必要使用openid;如果需要,就得获取openid。 顺便说一下,还有一个unionid的东西存在。现在同一家开发公司甲,既有微信小程序A,又有微信公众号B,都是用同一个开发平台账号开发的。 同时微信小程序A有个用户的openid是X,微信公众号B有个用户的openid是Y,那么我们怎么判断这两个用户是不是同一个人呢?所以引入了unionid的概念。 同一用户,对同一个微信开放平台下的不同应用,unionid是相同的 。什么意思呢?假如用户乙关注了这两个程序,那么乙在小程序A的应用中opendi是X,unionid是Z;同时乙在公众号B应用中的openid是Y,unionid是Z。 5 如何获取openid获取openid主要是两个步骤:
6 获取用户信息既然要获取openid,那肯定就是要将用户录入数据库,那肯定也要获取用户信息。目前能通过wx.getUserInfo获取到的用户信息是例如昵称、性别这一类的公开信息。 1、用户授权 获取用户信息需要用户授权,那怎么授权呢?以前可以一进入页面就弹出授权框,现在不提倡了,文档建议使用button,设置open-type来授权。 如下代码,点击button,如果没有授权会弹出授权框,如果拒绝了,那个e.detail.userInfo就是false,会执行else里代码块,如果接受,则执行if为true的操作;如果之前就已经有授权了,就不会弹出授权框,直接执行if为true的操作。 在开发时候,可以在开发者工具上方,点击“清缓存”按钮,这样就可以清除以前的授权信息,得重新授权。 2、获取用户信息 获取用户信息比较简单,调用wx.getUserInfo即可,这一块应该没什么好说的。 文章分享自微信公众号: 本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与! 作者:小程序社区 原始发表时间:2020-09-27 如有侵权,请联系 删除。 |