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


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 15 Javascript
FLASH 广告之外的链接
Dec 16 Javascript
JavaScript 全角转半角部分
Oct 28 Javascript
JS回调函数的应用简单实例
Sep 17 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
jQuery插件实现图片轮播特效
Jun 16 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
Aug 24 Javascript
JS之获取样式的简单实现方法(推荐)
Sep 13 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
Vue项目中使用Vux的安装过程
May 01 Javascript
js中async函数结合promise的小案例浅析
Apr 14 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 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
linux系统下php安装mbstring扩展的二种方法
2014/01/20 PHP
新浪SAE云平台下使用codeigniter的数据库配置
2014/06/12 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
在laravel-admin中列表中禁止某行编辑、删除的方法
2019/10/03 PHP
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
2013/06/17 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
js中this用法实例详解
2015/05/05 Javascript
JS跨域解决方案之使用CORS实现跨域
2016/04/14 Javascript
js弹出窗口返回值的简单实例
2016/05/28 Javascript
nodejs中sleep功能实现暂停几秒的方法
2017/07/12 NodeJs
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
微信小程序实现弹框效果
2020/05/26 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
Python线性回归实战分析
2018/02/01 Python
python实现决策树分类(2)
2018/08/30 Python
对python的bytes类型数据split分割切片方法
2018/12/04 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
Django自定义模板过滤器和标签的实现方法
2019/08/21 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
python 变量初始化空列表的例子
2019/11/28 Python
python离线安装外部依赖包的实现
2020/02/13 Python
信息工程学院毕业生推荐信
2013/11/05 职场文书
打架检讨书50字
2014/01/11 职场文书
护理专业大学生自我推荐信
2014/01/25 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
10的分与合教学反思
2014/04/30 职场文书
基层党支部公开承诺书
2014/05/29 职场文书
群众路线查摆问题整改措施思想汇报
2014/10/10 职场文书
水知道答案观后感
2015/06/08 职场文书
《秋天的雨》教学反思
2016/02/19 职场文书
《仙剑客栈2》第一弹正式宣传片公开 年内发售
2022/04/07 其他游戏