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


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 相关文章推荐
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
Nov 08 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
Apr 12 Javascript
javascript实现添加附件功能的方法
Nov 18 Javascript
详解Javascript事件驱动编程
Jan 03 Javascript
jQuery获取及设置表单input各种类型值的方法小结
May 24 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
Node.js中process模块常用的属性和方法
Dec 13 Javascript
Vue关于数据绑定出错解决办法
May 15 Javascript
详解webpack异步加载业务模块
Jun 23 Javascript
深入理解Vue router的部分高级用法
Aug 15 Javascript
微信小程序之导航滑块视图容器功能的实现代码(简单两步)
Jun 19 Javascript
vue实现打地鼠小游戏
Aug 21 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+MySql编写聊天室
2006/10/09 PHP
PHP 采集心得技巧
2009/05/15 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php微信开发之关注事件
2018/06/14 PHP
JS中style属性
2006/10/11 Javascript
用javascript实现计算两个日期的间隔天数
2007/08/14 Javascript
JavaScript 继承详解(二)
2009/07/13 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
如何将JS的变量值传递给ASP变量
2012/12/10 Javascript
jquery自定义属性(类型/属性值)
2013/05/21 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
protractor的安装与基本使用教程
2017/07/07 Javascript
js中怎么判断两个字符串相等的实例
2019/01/17 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
详解vue v-model
2020/08/31 Javascript
python实现用户答题功能
2018/01/17 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
枚举与#define宏的区别
2014/04/30 面试题
服装机修工岗位职责
2013/12/26 职场文书
党员思想汇报范文
2013/12/30 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
给市场的环保建议书
2014/05/14 职场文书
2015年教研员工作总结
2015/05/26 职场文书
羊脂球读书笔记
2015/06/30 职场文书
大学生社会实践感想
2015/08/11 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
《LOL》“克隆大作战”久违归来 幻灵战队皮肤上线
2022/04/03 其他游戏