微信小程序用户授权弹窗 拒绝时引导用户重新授权实现


Posted in Javascript onJuly 29, 2019

前言

我们在开发小程序时,如果想获取用户信息,就需要获取用的授权,如果用户误点了拒绝授权,我们怎么样去正确的引导用户重新授权呢。今天就来给大家讲讲如果正确的引导用户授权。

老规矩,先看效果图

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

从上图可以看出,我们在用户点击拒绝授权时,我们会弹出一个提示框,提示用户去设置页重新授权,当用户去授权页重新授权以后,我们再回到首页,点击获取用户信息时,就可以成功的获取到用户信息了。
如下图蓝色框里,就是我们成功的获取的用户信息。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现 

一,我们获取用户信息的时候需要用户授权

我们点击获取用户信息时,通常会弹出如下提示框,如果用户点击了取消,就再也没有办法通过点击授权按钮获取用户信息了。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

所以接下来我们要做的就是在用户拒绝了授权时,引导用户去设置页重新授权。
把获取用户授权的代码先贴给大家

<button open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 授权获取头像昵称 </button>

二,检测用户是否授权

我们在用户点击了上面定义的button按钮后,做权限检测。代码如下。

getUserInfo: function(e) {
  let that = this;
  // console.log(e)
  // 获取用户信息
  wx.getSetting({
   success(res) {
    // console.log("res", res)
    if (res.authSetting['scope.userInfo']) {
     console.log("已授权=====")
     // 已经授权,可以直接调用 getUserInfo 获取头像昵称
     wx.getUserInfo({
      success(res) {
       console.log("获取用户信息成功", res)
       that.setData({
        name: res.userInfo.nickName
       })
      },
      fail(res) {
       console.log("获取用户信息失败", res)
      }
     })
    } else {
     console.log("未授权=====")
     that.showSettingToast("请授权")
    }
   }
  })
 },

给大家简单解析下。

wx.getSetting :用来获取用户授权列表

if (res.authSetting['scope.userInfo']) 代码用户授权成功,如果用户没有授权,就代表授权失败。

在授权失败时,我们调用that.showSettingToast()方法

三,showSettingToast方法如下

// 打开权限设置页提示框
 showSettingToast: function(e) {
  wx.showModal({
   title: '提示!',
   confirmText: '去设置',
   showCancel: false,
   content: e,
   success: function(res) {
    if (res.confirm) {
     wx.navigateTo({
      url: '../setting/setting',
     })
    }
   }
  })
 }

这方法做的就是引导用户去设置页。

四,我们的设置页

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

我们的设置页其实很简单,只有上图这么一段代码。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现 

五,去系统设置页

我们上面第四步的button按钮,点击以后,就会去系统设置页。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

可以看到系统设置页,有一个开关,当用户点击开关时,就可以重新授权啦。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

重新授权成功以后,我们回到首页,就可以成功的获取到用户信息了。

微信小程序用户授权弹窗 拒绝时引导用户重新授权实现

到这里我们就成功的实现了引导用户授权的功能了。

把index.wxml和index.js代码贴出来给大家

index.wxml

<!--index.wxml-->
<button open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 授权获取头像昵称 </button>
<text>{{name}}</text>

index.js

//index.js
Page({
 getUserInfo: function(e) {
  let that = this;
  // console.log(e)
  // 获取用户信息
  wx.getSetting({
   success(res) {
    // console.log("res", res)
    if (res.authSetting['scope.userInfo']) {
     console.log("已授权=====")
     // 已经授权,可以直接调用 getUserInfo 获取头像昵称
     wx.getUserInfo({
      success(res) {
       console.log("获取用户信息成功", res)
       that.setData({
        name: res.userInfo.nickName
       })
      },
      fail(res) {
       console.log("获取用户信息失败", res)
      }
     })
    } else {
     console.log("未授权=====")
     that.showSettingToast("请授权")
    }
   }
  })
 },

 // 打开权限设置页提示框
 showSettingToast: function(e) {
  wx.showModal({
   title: '提示!',
   confirmText: '去设置',
   showCancel: false,
   content: e,
   success: function(res) {
    if (res.confirm) {
     wx.navigateTo({
      url: '../setting/setting',
     })
    }
   }
  })
 },
})

有任何关于小程序的问题可以加我微信:2501902696(备注小程序)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
Jquery阻止事件冒泡 event.stopPropagation
Dec 11 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
jQuery事件绑定.on()简要概述及应用
Feb 07 Javascript
js中判断用户输入的值是否为空的简单实例
Dec 23 Javascript
JavaScript支持的最大递归调用次数分析
Jun 24 Javascript
基于JavaScript实现动态创建表格和增加表格行数
Dec 20 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
May 25 Javascript
Angular.js基础学习之初始化
Mar 10 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
原生JS进行前后端同构
Apr 22 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 #Javascript
vue前后分离调起微信支付
Jul 29 #Javascript
详解vue-property-decorator使用手册
Jul 29 #Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 #Javascript
微信小程序 WXML节点信息查询详解
Jul 29 #Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 #Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 #Javascript
You might like
第九节 绑定 [9]
2006/10/09 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
Jquery 1.42 checkbox 全选和反选代码
2010/03/27 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
深入浅析Vue全局组件与局部组件的区别
2018/06/15 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
Python中对列表排序实例
2015/01/04 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
Python标准库之collections包的使用教程
2017/04/27 Python
基于MTCNN/TensorFlow实现人脸检测
2018/05/24 Python
python3基于OpenCV实现证件照背景替换
2018/07/18 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
python的dict判断key是否存在的方法
2020/12/09 Python
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
中软国际Java程序员机试题
2012/08/19 面试题
项目计划书范文
2014/01/09 职场文书
自我鉴定注意事项
2014/01/19 职场文书
房屋买卖授权委托书
2014/09/27 职场文书
企业计划生育责任书
2015/05/09 职场文书
z-index不起作用
2021/03/31 HTML / CSS
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS