微信小程序 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 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
Node.js 制作实时多人游戏框架
Jan 08 Javascript
基于jQuery实现select下拉选择可输入附源码下载
Feb 03 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
Mar 12 Javascript
浅谈js算法和流程控制
Dec 29 Javascript
bootstrap实现动态进度条效果
Mar 08 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
Aug 09 Javascript
对vue中v-on绑定自定事件的实例讲解
Sep 06 Javascript
详解Angular Karma测试的持续集成实践
Nov 15 Javascript
javascript 设计模式之组合模式原理与应用详解
Apr 08 Javascript
JS浏览器BOM常见操作实例详解
Apr 27 Javascript
详解Vue slot插槽
Nov 20 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以及MYSQL日期比较方法
2012/11/29 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
Yii框架页面渲染操作实例详解
2019/07/19 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
微信自定义分享链接信息(标题,图片和内容)实现过程详解
2019/09/04 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
layui表格设计以及数据初始化详解
2019/10/26 Javascript
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
Python全局变量操作详解
2015/04/14 Python
python中sleep函数用法实例分析
2015/04/29 Python
Python中的__slots__示例详解
2017/07/06 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python打印9宫格、25宫格等奇数格 满足横竖斜相加和相等
2019/07/19 Python
django数据库自动重连的方法实例
2019/07/21 Python
python经典趣味24点游戏程序设计
2019/07/26 Python
Python 离线工作环境搭建的方法步骤
2019/07/29 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
如何在Python对Excel进行读取
2020/06/04 Python
pytorch快速搭建神经网络_Sequential操作
2020/06/17 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
为什么需要版本控制
2016/10/28 面试题
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
物业管理毕业生个人的求职信
2013/11/30 职场文书
报到证丢失证明
2014/01/11 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS