微信小程序 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 相关文章推荐
js中document.getElementByid、document.all和document.layers区分介绍
Dec 08 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
Nov 23 Javascript
js报$ is not a function 的问题的解决方法
Jan 20 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 Javascript
jQuery实现字体颜色渐变效果的方法
Mar 29 jQuery
jquery.validate表单验证插件使用详解
Jun 21 jQuery
浅谈在vue项目中如何定义全局变量和全局函数
Oct 24 Javascript
vue webpack重写cookie路径的方法
Jul 10 Javascript
vue实现五子棋游戏
May 28 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简单解析mysqli查询结果的方法(2种方法)
2016/06/29 PHP
PHPExcel在linux环境下导出报500错误的解决方法
2017/01/26 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
IE 下Enter提交表单存在重复提交问题的解决方法
2014/05/04 Javascript
浅析ES6的八进制与二进制整数字面量
2016/08/30 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
vue3.0中使用postcss-pxtorem的具体方法
2019/11/20 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
Python常见异常分类与处理方法
2017/06/04 Python
Python小整数对象池和字符串intern实例解析
2020/03/21 Python
Numpy数组的广播机制的实现
2020/11/03 Python
python 爬取英雄联盟皮肤并下载的示例
2020/12/04 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
美国在线印刷公司:PsPrint
2017/10/12 全球购物
傲盾软件面试题
2015/08/17 面试题
工作时间上网检讨书
2014/02/03 职场文书
教师党员公开承诺事项
2014/05/28 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
邹越演讲观后感
2015/06/15 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang
如何解决php-fpm启动不了问题
2021/11/17 PHP
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
JS实现简单九宫格抽奖
2022/06/28 Javascript
mysql sock文件存储了什么信息
2022/07/15 MySQL