微信小程序 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 相关文章推荐
javascript Discuz代码中的msn聊天小功能
May 25 Javascript
JavaScript Array Flatten 与递归使用介绍
Oct 30 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
Jan 15 Javascript
JavaScript实现动态创建CSS样式规则方案
Sep 06 Javascript
sails框架的学习指南
Dec 22 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
jQuery自动添加表单项的方法
Jul 13 Javascript
AngualrJS中每次$http请求时的一个遮罩层Directive
Jan 26 Javascript
为什么JavaScript没有块级作用域
May 22 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
May 10 Javascript
jQuery实现键盘回车搜索功能
Jul 25 jQuery
vue实现微信二次分享以及自定义分享的示例
Mar 20 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生成缩略图的函数代码(修改版)
2011/01/18 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PDO防注入原理分析以及注意事项
2015/02/25 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
nodejs中简单实现Javascript Promise机制的实例
2014/12/06 NodeJs
JS+CSS实现另类带提示效果的竖向导航菜单
2015/10/15 Javascript
AngularJS中关于ng-class指令的几种实现方式详解
2016/09/17 Javascript
Bootstrap实现提示框和弹出框效果
2017/01/11 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
详解通过JSON数据使用VUE.JS
2017/05/26 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
Python3学习笔记之列表方法示例详解
2017/10/06 Python
Python实现句子翻译功能
2017/11/14 Python
selenium2.0中常用的python函数汇总
2019/08/05 Python
Python Numpy数组扩展repeat和tile使用实例解析
2019/12/09 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
html5菜单折纸效果
2014/04/22 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
安全保卫工作竞聘材料
2014/08/25 职场文书
2015年教师师德师风承诺书
2015/04/28 职场文书
民主生活会意见
2015/06/05 职场文书
陪护人员误工证明
2015/06/24 职场文书
2015初中团委工作总结
2015/07/28 职场文书
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers