微信小程序 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 相关文章推荐
动态控制Table的js代码
Mar 07 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
Nov 08 Javascript
超级好用的jQuery圆角插件 Corner速成
Aug 31 Javascript
jquery实现图片水平滚动效果代码分享
Aug 26 Javascript
JavaScript模块化开发之SeaJS
Dec 13 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
Sep 25 Javascript
Angular学习笔记之angular的$filter服务浅析
Nov 12 Javascript
jQuery无缝轮播图代码
Dec 22 Javascript
jstree单选功能的实现方法
Jun 07 Javascript
JS实现仿微信支付弹窗功能
Jun 25 Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
PHP动态分页函数,PHP开发分页必备啦
2011/11/07 PHP
php笔记之:AOP的应用
2013/04/24 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
javascript下查找父节点的简单方法
2007/08/13 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
基于javascript实现右下角浮动广告效果
2016/01/08 Javascript
基于zepto.js简单实现上传图片
2016/06/21 Javascript
AngularJS监听路由的变化示例代码
2016/09/23 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
巧用canvas
2017/01/21 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
浅谈node.js 命令行工具(cli)
2018/05/10 Javascript
JS基于封装函数实现的表格分页完整示例
2018/06/26 Javascript
vue 实现element-ui中的加载中状态
2020/11/11 Javascript
8个非常实用的Vue自定义指令
2020/12/15 Vue.js
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
用python写测试数据文件过程解析
2019/09/25 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
爱他美官方海外旗舰店:Aptamil奶粉
2017/12/22 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
extern在函数声明中是什么意思
2014/01/19 面试题
迎接领导欢迎词
2014/01/11 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
装饰技术负责人岗位职责
2015/04/13 职场文书
任命书格式模板
2015/09/22 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python