微信小程序 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 字符串连接的性能问题(多浏览器)
Nov 18 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
探讨js字符串数组拼接的性能问题
Oct 11 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
超详细的JS弹出窗口代码大全
Apr 18 Javascript
Javascript使用function创建类的两种方法(推荐)
Nov 19 Javascript
vue+node实现图片上传及预览的示例方法
Nov 22 Javascript
vue quill editor 使用富文本添加上传音频功能
Jan 14 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 Javascript
解决vue的touchStart事件及click事件冲突问题
Jul 21 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 Javascript
vuex的使用和简易实现
Jan 07 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
PHP实现防盗链的方法分析
2017/07/25 PHP
laravel-admin的多级联动方法
2019/09/30 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
番茄的表单验证类代码修改版
2008/07/18 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
js解决弹窗问题实现班级跳转DIV示例
2014/01/06 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
BootStrap智能表单实战系列(七)验证的支持
2016/06/13 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
Node实战之不同环境下配置文件使用教程
2018/01/02 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
利用JS响应式修改vue实现页面的input值
2019/09/02 Javascript
解决layer弹出层自适应页面大小的问题
2019/09/16 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
2019/11/26 jQuery
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
python处理html转义字符的方法详解
2016/07/01 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
基于梯度爆炸的解决方法:clip gradient
2020/02/04 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
PyQt5中向单元格添加控件的方法示例
2020/03/24 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
新秀丽官方旗舰店:Samsonite拉杆箱、双肩包、皮具
2018/03/05 全球购物
大学校庆策划书
2014/01/31 职场文书
党校培训自我鉴定
2014/02/01 职场文书
Matplotlib绘制条形图的方法你知道吗
2022/03/21 Python
vue @ ~ 相对路径 路径别名设置方式
2022/06/05 Vue.js