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


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 相关文章推荐
javascript对数组的常用操作代码 数组方法总汇
Jan 27 Javascript
JavaScript中的作用域链和闭包
Jun 30 Javascript
关于js注册事件的常用方法
Apr 03 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
JS实现点击上移下移LI行数据的方法
Aug 05 Javascript
jQuery带时间的日期控件代码分享
Aug 26 Javascript
jQuery实现的可编辑表格完整实例
Jun 20 Javascript
通过示例彻底搞懂js闭包
Aug 10 Javascript
vue2.0与bootstrap3实现列表分页效果
Nov 28 Javascript
深入浅析Vue中的 computed 和 watch
Jun 06 Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 Javascript
通过GASP让vue实现动态效果实例代码详解
Nov 24 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
一个比较简单的PHP 分页分组类
2009/12/10 PHP
php checkbox 取值详细说明
2010/08/19 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php处理带有中文URL的方法
2016/07/11 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
Javascript 鼠标移动上去 滑块跟随效果代码分享
2013/11/23 Javascript
javascript 回调函数详解
2014/11/11 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
js实现索引图片切换效果
2015/11/21 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[01:57]2018年度DOTA2最具潜力解说-完美盛典
2018/12/16 DOTA
python中readline判断文件读取结束的方法
2014/11/08 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python区块及区块链的开发详解
2019/07/03 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Django values()和value_list()的使用
2020/03/31 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
Pycharm安装python库的方法
2020/11/24 Python
系统管理员的职责包括那些?管理的对象是什么?
2016/09/20 面试题
最新党员的自我评价分享
2013/11/04 职场文书
马云的职业生涯规划之路
2014/01/01 职场文书
培训自我鉴定
2014/01/31 职场文书
法人委托书范本
2014/04/04 职场文书
领导班子对照检查材料
2014/09/22 职场文书
工作汇报开头与结尾怎么写
2014/11/08 职场文书
2015年度学校卫生工作总结
2015/05/12 职场文书
如何书写邀请函?
2019/06/24 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书
再见,2019我们不负使命;你好,2020我们砥砺前行
2020/01/03 职场文书