微信小程序 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 相关文章推荐
Javascript无阻塞加载具体方式
Jun 28 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
May 13 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
JS绘制微信小程序画布时钟
Dec 24 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
Feb 18 Javascript
webpack构建react多页面应用详解
Sep 15 Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 Javascript
vue中动态设置meta标签和title标签的方法
Jul 11 Javascript
使用Node.js在深度学习中做图片预处理的方法
Sep 18 Javascript
微信小程序实现点击生成随机验证码
Sep 09 Javascript
如何使用 vue-cli 创建模板项目
Nov 19 Vue.js
在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
Windows7下的php环境配置教程
2015/02/28 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP实现留言板功能的详细代码
2017/03/25 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
Javascript弹出窗口的各种方法总结
2013/11/11 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
js实现简单的购物车有图有代码
2014/05/26 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
JavaScript处理解析JSON数据过程详解
2015/09/11 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
Bootstrap Multiselect 常用组件实现代码
2017/07/09 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
nodejs中使用archive压缩文件的实现代码
2019/11/26 NodeJs
three.js 如何制作魔方
2020/07/31 Javascript
vue+canvas实现拼图小游戏
2020/09/18 Javascript
python获取从命令行输入数字的方法
2015/04/29 Python
Python中将变量按行写入txt文本中的方法
2018/04/03 Python
对pandas进行数据预处理的实例讲解
2018/04/20 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
在django view中给form传入参数的例子
2019/07/19 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
eBay奥地利站:eBay.at
2019/07/24 全球购物
计算机专业推荐信范文
2013/11/27 职场文书
销售实习自我鉴定
2013/12/07 职场文书
化学教学随笔感言
2014/02/19 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
入党函调证明材料
2014/12/24 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
mysql性能优化以及配置连接参数设置
2022/05/06 MySQL
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis