微信小程序 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代码(站点及虚拟目录)
Oct 20 Javascript
jQuery.extend 函数的详细用法
Jun 27 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
jQuery操作表单常用控件方法小结
Mar 23 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
May 03 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
vue实现未登录跳转到登录页面的方法
Jul 17 Javascript
electron实现静默打印的示例代码
Aug 12 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
Sep 04 Javascript
Electron 调用命令行(cmd)
Sep 23 Javascript
vue ref如何获取子组件属性值
Mar 31 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php代码把全角数字转为半角数字
2007/12/10 PHP
ThinkPHP的截取字符串函数无法显示省略号的解决方法
2014/06/25 PHP
ThinkPHP分组下自定义标签库实例
2014/11/01 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
浅谈Nodejs应用主文件index.js
2016/08/28 NodeJs
利用js编写响应式侧边栏
2016/09/17 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
2019/02/21 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
在Webpack中用url-loader处理图片和字体的问题
2020/04/28 Javascript
python绘制双柱形图代码实例
2017/12/14 Python
关于Python正则表达式 findall函数问题详解
2018/03/22 Python
Python之两种模式的生产者消费者模型详解
2018/10/26 Python
浅谈python的输入输出,注释,基本数据类型
2019/04/02 Python
实例详解Python模块decimal
2019/06/26 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
Python3分析处理声音数据的例子
2019/08/27 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
表扬信格式
2014/01/12 职场文书
家教广告词
2014/03/19 职场文书
卫生系统先进事迹
2014/05/13 职场文书
优秀教研组申报材料
2014/12/26 职场文书
小学教师读书笔记
2015/07/01 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
Python如何把不同类型数据的json序列化
2021/04/30 Python
vscode内网访问服务器的方法
2022/06/28 Servers