故事背景 我们发现大部分小程序都会使用 wx.getUserInfo 接口,来获取用户信息。原本设计这个接口时,我们希望开发者在真正需要用户信息的情况下才去调取这个接口,但很多开发者会直接调用这个接口,导致用户在使用小程序的时候产生困扰,归结起来有几点:
· 开发者在小程序首页直接调用 wx.getUserInfo 进行授权,弹框获取用户信息,会使得一部分用户点击“拒绝”按钮。
· 在开发者没有处理用户拒绝弹框的情况下,用户必须授权头像昵称等信息才能继续使用小程序,会导致某些用户放弃使用该小程序。
· 用户没有很好的方式重新授权,尽管我们增加了设置页面,可以让用户选择重新授权,但很多用户并不知道可以这么操作。
此外,我们发现开发者默认将 wx.login 和 wx.getUserInfo 绑定使用,这个是由于我们一开始的设计缺陷和实例代码导致的(wx.getUserInfo 必须通过 wx.login 在后台生成 session_key后才能调用)。同时,我们收到开发者的反馈,希望用户进入小程序首页便能获取到用户的 unionId,以便识别到用户是否以前关注了同主体公众号或使用过同主体的App 。
为了解决以上问题,针对获取用户信息我们更新了三个能力:
1.使用组件来获取用户信息
2.若用户满足一定条件,则可以用wx.login 获取到的code直接换到unionId
3.wx.getUserInfo 不需要依赖 wx.login 就能调用得到数据
获取用户信息组件介绍
组件变化:
open-type 属性增加 getUserInfo :用户点击时候会触发 bindgetuserinfo 事件。
新增事件 bindgetuserinfo :当 open-type为 getUserInfo 时,用户点击会触发。可以从事件返回参数的 detail 字段中获取到和 wx.getUserInfo 返回参数相同的数据。
示例:
和 wx.getUserInfo 不同之处在于:
1.API wx.getUserInfo 只会弹一次框,用户拒绝授权之后,再次调用将不会弹框;
2.组件