微信小程序 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 相关文章推荐
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
判断ie的两种简单方法
Aug 12 Javascript
JQuery选择器、过滤器大整理
May 26 Javascript
JavaScript实现弹出广告功能
Mar 30 Javascript
微信小程序 request接口的封装实例代码
Apr 26 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
Jan 19 Javascript
Javascript实现html转pdf高清版(提高分辨率)
Feb 19 Javascript
在 Vue 中编写 SVG 图标组件的方法
Feb 24 Javascript
纯js+css实现在线时钟
Aug 18 Javascript
js实现简单抽奖功能
Nov 24 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 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接口中interface存在的意义
2013/06/27 PHP
PHPMAILER实现PHP发邮件功能
2018/04/18 PHP
PHP filesize函数用法浅析
2019/02/15 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
基于jQuery的输入框无值自动显示指定数据的实现代码
2011/01/24 Javascript
jquery插件如何使用 jQuery操作Cookie插件使用介绍
2012/12/15 Javascript
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
2013/01/03 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
javascript判断是否按回车键并解决浏览器之间的差异
2014/05/13 Javascript
js调试系列 源码定位与调试[基础篇]
2014/06/18 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
js改变透明度实现轮播图的算法
2020/08/24 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
微信小程序使用wxParse解析html的方法教程
2018/07/06 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
vue实现文字横向无缝走马灯组件效果的实例代码
2019/04/09 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Python 正则表达式匹配字符串中的http链接方法
2018/12/25 Python
Python常见数字运算操作实例小结
2019/03/22 Python
Python使用Turtle库绘制一棵西兰花
2019/11/23 Python
用于ETL的Python数据转换工具详解
2020/07/21 Python
速比涛英国官网:Speedo英国
2019/07/15 全球购物
个人授权委托书
2014/04/03 职场文书
大三学习计划书范文
2014/05/02 职场文书
青奥会口号
2014/06/12 职场文书
多媒体教室标语
2014/06/26 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
业务员岗位职责
2015/02/03 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
八年级语文教学反思
2016/03/03 职场文书