微信小程序Getuserinfo解决方案图解


Posted in Javascript onAugust 24, 2018

问题

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

微信小程序Getuserinfo解决方案图解

处理方法

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

微信小程序Getuserinfo解决方案图解

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

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

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

微信小程序Getuserinfo解决方案图解

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

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

微信小程序Getuserinfo解决方案图解

在授权页面authorize 写入按钮组件

微信小程序Getuserinfo解决方案图解

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

微信小程序Getuserinfo解决方案图解

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

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

在首页多加一个遮罩层

微信小程序Getuserinfo解决方案图解

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

微信小程序Getuserinfo解决方案图解

未授权授权遮罩层显示

微信小程序Getuserinfo解决方案图解 微信小程序Getuserinfo解决方案图解

引导用户授权后

hasUserInfo: true

遮罩层消失,完成授权。

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

总结

以上所述是小编给大家介绍的微信小程序Getuserinfo解决方案,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery获取和设置表单元素的方法
Feb 14 Javascript
node.js [superAgent] 请求使用示例
Mar 13 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
Jan 21 Javascript
jquery实现input框获取焦点的方法
Feb 06 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
Apr 26 Javascript
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
JS实现旋转木马轮播图
Jan 01 Javascript
Vue是怎么渲染template内的标签内容的
Jun 05 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
Feb 25 Javascript
解决vue2.0路由跳转未匹配相应用路由避免出现空白页面的问题
Aug 24 #Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 #Javascript
vue 中引用gojs绘制E-R图的方法示例
Aug 24 #Javascript
解决webpack dev-server不能匹配post请求的问题
Aug 24 #Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
Aug 24 #Javascript
Nuxt.js实现校验访问浏览器类型的中间件
Aug 24 #Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 #Javascript
You might like
php调用自己java程序的方法详解
2016/05/13 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP基于回溯算法解决n皇后问题的方法示例
2017/11/07 PHP
laravel 出现command not found问题的解决方案
2019/10/23 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
javascript XML数据显示为HTML一例
2008/12/23 Javascript
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
JQuery.Ajax()的data参数类型实例详解
2015/11/20 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
2017/11/11 Javascript
浅谈webpack打包之后的文件过大的解决方法
2018/03/07 Javascript
Vue中的无限加载vue-infinite-loading的方法
2018/04/08 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
2020/07/30 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
python 内置函数filter
2017/06/01 Python
python 读取鼠标点击坐标的实例
2018/12/29 Python
Python操作远程服务器 paramiko模块详细介绍
2019/08/07 Python
Python数据存储之 h5py详解
2019/12/26 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
马来西亚网上购物:Youbeli
2018/03/30 全球购物
Oakley西班牙官方商店:太阳眼镜和男女运动服
2019/04/26 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
文案策划求职信
2014/03/18 职场文书
行政上诉状范文
2015/05/23 职场文书
基层党建工作简报
2015/07/21 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
background-position百分比原理详解
2021/05/08 HTML / CSS
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL