微信小程序 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 相关文章推荐
imgAreaSelect 中文文档帮助说明
Oct 08 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
May 21 Javascript
JS中使用变量保存arguments对象的方法
Jun 03 Javascript
jQuery获取元素父节点的方法
Jun 21 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
js事件冒泡与事件捕获详解
Feb 20 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
详解Vue源码学习之双向绑定
Apr 10 Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 Javascript
Vue实现背景更换颜色操作
Jul 17 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 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
19个超实用的PHP代码片段
2014/03/14 PHP
PHP-FPM的配置与优化讲解
2019/03/15 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
php判断目录存在的简单方法
2019/09/26 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
没有document.getElementByName方法
2013/08/19 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
JavaScript基本语法讲解
2015/06/03 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
微信小程序 form组件详解
2016/10/25 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
关于layui时间回显问题的解决方法
2019/09/24 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
Vue项目移动端滚动穿透问题的实现
2020/05/19 Javascript
js实现3D旋转相册
2020/08/02 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
浅谈numpy库的常用基本操作方法
2018/01/09 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
2018/02/21 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
Python将主机名转换为IP地址的方法
2019/08/14 Python
Python requests模块session代码实例
2020/04/14 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
教师旷工检讨书
2014/01/18 职场文书