微信小程序 wx.getUserInfo引导用户授权问题实例分析


Posted in Javascript onMarch 09, 2020

本文实例讲述了微信小程序 wx.getUserInfo引导用户授权问题。分享给大家供大家参考,具体如下:

首先,在page外定义一个函数用户判断是否为空对象

var isEmptyObject = function (e) {
 var temp;
 for (temp in e)
  return !1;
 return !0
}

然后,在page中的onload里面调用授权

onLoad: function () {
  var that = this;
  if (app.globalData.userInfo) {
   this.setData({
    userInfo: app.globalData.userInfo
   })
  } else if (this.data.canIUse) {
   // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
   // 所以此处加入 callback 以防止这种情况
   app.userInfoReadyCallback = res => {
    this.setData({
     userInfo: res.userInfo
    })
   }
  } else {
   // 在没有 open-type=getUserInfo 版本的兼容处理
   wx.getUserInfo({
    success: res => {
     app.globalData.userInfo = res.userInfo
     this.setData({
      userInfo: res.userInfo
     })
     that.checkSettingStatu();
    },
    fail: function () {
     wx.showModal({
      title: '用户未授权',
      content: '如需正常使用该小程序功能,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
      showCancel: false,
      success: function (resbtn) {
       if (resbtn.confirm) {
        wx.openSetting({
         success: function success(resopen) {
          // 获取用户数据
          that.checkSettingStatu();
         }
        });
       }
      }
     })
    }
   })
  }
 }

最后,在page中定义一个 用于检测 当前授权的状态

checkSettingStatu: function (cb) {
  var that = this;
  // 判断是否是第一次授权,非第一次授权且授权失败则进行提醒
  wx.getSetting({
   success: function success(res) {
    var authSetting = res.authSetting;
    if (isEmptyObject(authSetting)) {
        //第一次
    } else {
     // 没有授权的提醒
     if (authSetting['scope.userInfo'] === false) {
      wx.showModal({
       title: '用户未授权',
       content: '如需正常使用该小程序功能,请按确定并在授权管理中选中“用户信息”,然后点按确定。最后再重新进入小程序即可正常使用。',
       showCancel: false,
       success: function (res) {
        if (res.confirm) {
         wx.openSetting({
          success: function success(res) {
           console.log()
          }
         });
        }
       }
      })
     } else if (authSetting['scope.userInfo'] === true) {
           //该处用户获取用户的一些授权信息
      if (that.data.userInfo) {
       var nickname = that.data.userInfo.nickName;
       var gender = that.data.userInfo.gender
       //性别 0:未知、1:男、2:女
       if (gender == 1) {
        gender = "True"
       } else if (gender == 2) {
        gender = "False"
       } else {
        gender = "True"
       }
     
      }
     }
    }
   }
  })
 }

简单的记录,不喜勿喷。

希望本文所述对大家微信小程序开发有所帮助。

Javascript 相关文章推荐
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
Mar 06 Javascript
javascript 学习之旅 (3)
Feb 05 Javascript
jquery 添加节点的几种方法介绍
Sep 04 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
13个PHP函数超实用
Oct 21 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
Feb 20 Javascript
javascript中的面向对象
Mar 30 Javascript
iconfont的三种使用方式详解
Aug 05 Javascript
vue二级菜单导航点击选中事件的方法
Sep 12 Javascript
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
JavaScript的function函数详细介绍
Nov 20 Javascript
在Vue中实现随hash改变响应菜单高亮
Mar 09 #Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 #Javascript
JS中的const命令你真懂它吗
Mar 08 #Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 #Javascript
Vue vm.$attrs使用场景详解
Mar 08 #Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
Mar 08 #Javascript
vue-cli点击实现全屏功能
Mar 07 #Javascript
You might like
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
详解php命令注入攻击
2019/04/06 PHP
把jquery 的dialog和ztree结合实现步骤
2013/08/02 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
AngularJS初始化过程分析(引导程序)
2014/12/06 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
webpack中CommonsChunkPlugin详细教程(小结)
2017/11/09 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
Python中将字典转换为XML以及相关的命名空间解析
2015/10/15 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python绘制动态曲线教程
2020/02/24 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
纯CSS3制作的鼠标悬停时边框旋转
2017/01/03 HTML / CSS
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
Linux如何为某个操作添加别名
2013/03/01 面试题
Structs界面控制层技术
2013/10/11 面试题
入党自我鉴定
2014/03/25 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
企业领导对照检查材料
2014/08/20 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
师德承诺书2015
2015/04/28 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript