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


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时间日期和毫秒的相互转换
Feb 22 Javascript
超级给力的JavaScript的React框架入门教程
Jul 02 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
Jan 04 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
Jan 21 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
详解Vue2 无限级分类(添加,删除,修改)
Mar 07 Javascript
详解JSONObject和JSONArray区别及基本用法
Oct 25 Javascript
详解vue.js根据不同环境(正式、测试)打包到不同目录
Jul 13 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
Aug 08 jQuery
mpvue全局引入sass文件的方法步骤
Mar 06 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
再次研究下cache_lite
2007/02/14 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP输出九九乘法表代码实例
2015/03/27 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
JavaScript面象对象设计
2008/04/28 Javascript
JavaScript 无符号右移运算符
2009/04/17 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
javascript实现表格增删改操作实例详解
2015/05/15 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
在vue里使用codemirror遇到的问题
2018/11/01 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
详解nvm管理多版本node踩坑
2019/07/26 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
vue实现树状表格效果
2020/12/29 Vue.js
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python调用fortran模块
2016/04/08 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Python中强大的命令行库click入门教程
2016/12/26 Python
python批量导入数据进Elasticsearch的实例
2018/05/30 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
基于python实现百度翻译功能
2019/05/09 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
2019/06/18 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Python json转字典字符方法实例解析
2020/04/13 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
自荐信格式简述
2014/01/25 职场文书
会计助理岗位职责
2014/02/17 职场文书
青蓝工程实施方案
2014/03/27 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python