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


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 相关文章推荐
js wmp操作代码小结(音乐连播功能)
Nov 08 Javascript
javascript整除实现代码
Nov 23 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
JS数组array元素的添加和删除方法代码实例
Jun 01 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
搭建element-ui的Vue前端工程操作实例
Feb 23 Javascript
JavaScript实现的简单加密解密操作示例
Jun 01 Javascript
关于vue的npm run dev和npm run build的区别介绍
Jan 14 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异步执行的常用方式详解
2013/06/03 PHP
JS处理VBArray的函数使用说明
2008/05/11 Javascript
在浏览器中获取当前执行的脚本文件名的代码
2011/07/19 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
详解vuelidate 对于vueJs2.0的验证解决方案
2017/03/09 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
2018/04/25 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
跨域解决之JSONP和CORS的详细介绍
2018/11/21 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
python实现按行切分文本文件的方法
2016/04/18 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
浅析python参数的知识点
2018/12/10 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
HTML5和以前HTML4的区别整理
2013/10/20 HTML / CSS
HTML5注册页面示例代码
2014/03/27 HTML / CSS
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
就业意向书范文
2014/04/01 职场文书
购房委托书范本
2014/09/18 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
离婚协议书范本
2015/01/26 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python