微信小程序 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 相关文章推荐
event.srcElement 用法笔记e.target
Dec 18 Javascript
JavaScript判断一个URL链接是否有效的实现方法
Oct 08 Javascript
jQuery动态添加、删除元素的方法
Jan 09 Javascript
jQuery中insertAfter()方法用法实例
Jan 08 Javascript
JQuery中节点遍历方法实例
May 18 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
Aug 01 Javascript
微信js-sdk预览图片接口及从拍照或手机相册中选图接口用法示例
Oct 13 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
Dec 20 Javascript
JS中验证整数和小数的正则表达式
Oct 08 Javascript
微信小程序中data-key属性之数据传输(经验总结)
Aug 22 Javascript
微信小程序绘制半圆(弧形)进度条
Nov 18 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
php下使用以下代码连接并测试
2008/04/09 PHP
javascript some()函数用法详解
2014/11/13 PHP
PHP微信分享开发详解
2017/01/14 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
JavaScript 动态改变图片大小
2009/06/11 Javascript
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
nodejs项目windows下开机自启动的方法
2017/11/22 NodeJs
AngularJS实现的锚点楼层跳转功能示例
2018/01/02 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
微信小程序左右滚动公告栏效果代码实例
2019/09/16 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
在Python中操作字符串之rstrip()方法的使用
2015/05/19 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
python得到windows自启动列表的方法
2018/10/14 Python
python绘制动态曲线教程
2020/02/24 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
2020/05/25 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
iHerb香港:维生素、补充剂和天然保健品
2017/08/01 全球购物
俄罗斯最大的在线手表商店:Bestwatch.ru
2020/01/11 全球购物
加拿大留学自荐信
2014/01/28 职场文书
小学生读书活动总结
2014/06/30 职场文书
单位委托书怎么写
2014/09/21 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS