微信小程序 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 相关文章推荐
js下获取div中的数据的原理分析
Apr 07 Javascript
jQuery中使用了document和window哪些属性和方法小结
Sep 13 Javascript
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
jquery延迟加载外部js实现代码
Jan 11 Javascript
jQuery实现id模糊查询的小例子
Mar 19 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
Oct 28 Javascript
ReactNative-JS 调用原生方法实例代码
Oct 08 Javascript
详解tween.js的使用教程
Sep 14 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
vue之浏览器存储方法封装实例
Mar 15 Javascript
在element-ui的select下拉框加上滚动加载
Apr 18 Javascript
Vue中错误图片的处理的实现代码
Nov 07 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
CakePHP去除默认显示的标题及图标的方法
2008/10/22 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
PHP 加密解密内部算法
2010/04/22 PHP
PHP无限分类(树形类)的深入分析
2013/06/02 PHP
THINKPHP内容分页代码分享
2015/01/14 PHP
php输出全球各个时区列表的方法
2015/03/31 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
jcrop基本参数一览
2013/07/16 Javascript
javascript关于继承解析
2016/05/10 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
AngularJs expression详解及简单示例
2016/09/01 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
详解Nodejs之npm&package.json
2017/06/15 NodeJs
vue生成token保存在客户端localStorage中的方法
2017/10/25 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python绘制中国大陆人口热力图
2018/11/07 Python
python3 实现一行输入,空格隔开的示例
2018/11/14 Python
python浪漫表白源码
2019/04/05 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
2020/02/29 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
计算机科学系职业生涯规划书
2014/03/08 职场文书
小学生家长寄语
2014/04/02 职场文书
干部竞争上岗演讲稿
2014/09/11 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
出差报告范文
2014/11/06 职场文书
中考学习决心书
2015/02/04 职场文书
食品药品安全责任书
2015/05/11 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技