微信小程序getUserInfo解决方案

问题

在微信小程序开发中,获取用户信息是常常会用到的!在以前,咱们直接调用wx.getUserInfo接口,就能够直接获取用户的信息,然而为了安全考虑,从2018年4月30号开始,wx.getUserInfo接口不能直接调用(接口调整),须要使用 <button open-type="getUserInfo"></button> 引导用户主动进行受权操做,意外就是来的这么忽然,防不胜防!!!html

image.png 

处理方法

一、<open-data></open-data> :只是简单的获取信息用于显示

  image.png

  其中,type="userAvatarUrl"是获取用户头像,type="userNickName"是获取用户昵称,具体使用详情查看小程序开发文档 ,此方法仅用于直接简单的展现用户信息。小程序

二、使用 <button open-type="getUserInfo">获取用户信息

    小程序官方文档有在说明wx.getUserInfo 当用户未受权过,调用该接口将直接报错,即便调用该接口将直接jinru进入fail的回调; 当用户受权过,可使用该接口获取用户信息。
微信小程序

image.png

  可是,如何有更好的用户体验来引导用户手动调用此方法呢?这里思考了几种实现方案:api

一、在项目首页直接调用getUserInfo方法,若从未受权过,跳转到受权页面引导用户手动受权安全

     image.png

    在受权页面authorize 写入按钮组件image.png微信

并在js中,加入手动点击按钮的方法,返回首页网络

image.png

此方案可行,可是受权页面就一个受权的按钮未免显得突兀些,进一步作优化方案。ide

 

考虑到是否是可以直接经过条件渲染wx-if 在首页多加一部分遮罩层做为引导用户受权的页面展现,由于用户使用小程序一经受权之后,再次进入小程序就不用受权了,也就是说只有在用户第一次使用小程序的时候才会引导用户受权操做,因此这里考虑经过遮罩层来实现。post

在首页多加一个遮罩层优化

image.png

同时查阅微信小程序开发文档 在页面加载后调用wx.getSetting方法能够获取当前用户的设置,返回值中只会出现小程序已经向用户请求过的权限,这样能够判断用户是否受权过权限

image.png

未受权受权遮罩层显示

               image.png                                           image.png

引导用户受权后

hasUserInfo: true

遮罩层消失,完成受权。

微信修改getUSerInfo这个接口后确实不如以前直接进入小程序自动调用获取用户信息方便些,可是确实是为了增强安全性的考究,才经过按钮的方式让用户本身主动去受权,虽然对于开发者咱们来说不太习惯,可是对于增强了用户信息的安全性,网络信息安全确实是比较重要的一环。

相关文章
相关标签/搜索